| |
Mostrar Mensajes
|
|
Páginas: [1]
|
|
1
|
Programación / Programación C/C++ / Re: validador hecho en c, conpila pero no funciona
|
en: 06 Septiembre 2008, 21:38
|
Nuevamente, es un honor leer tus cordiales y cariñosas palabras  En serio, pretendo aprender. Pude quedarme en silencio y decir que el código fuente lo hice solo. Para que no te sientas mal, te doy las gracias porque has tenido paciencia y haber escrito sugerencias en un tono muy tierno.  Lo probé anoche y compila. Uso dev-c++, así que me extraña que no te haya funcionado. (:manzanitas mode on: ->Compile ..aparece Done... ->Run :se abre la ventana...aparece Ingrese Rut: se ingresa números y se cierra el programa. Si ingresas por ejemplo "barney70" lo toma como error. :manzanitas mode off:) Ahora bien, es mi deber reconocer que aun tiene fallos ( si escribes mas de dos veces letras y números, se sale la aplicación  )...Por mi parte buscare mejorar el código. ( Y probaré el camino recursivo.)
|
|
|
|
|
2
|
Programación / Programación C/C++ / Re: validador hecho en c, conpila pero no funciona
|
en: 06 Septiembre 2008, 03:58
|
Gracias por alegrarme el día con tus comentarios.  Volviendo al tema...antes que me respondieras..he aquí la variación del código.. con ayuda de un compis  #include <stdio.h> #include <ctype.h> /**Este metodo valida si el rut ingresado son solo numeros */ int main(){ /**He aqui la variable rut en formato char para hacer corroboraciones*/ char rut[]={'1','2','3','4','l','6',';'}; int i=0,j=0; printf("Ingrese RUT: "); scanf("%s", &rut); /*Para validar esto se ocupa la funcion isdigit*/ while(i<7) { if( isdigit(rut )==0){ printf("%i, %d\n", rut, isdigit(rut)); j=1; i=7; } else i++; } if(j==1) { printf("RUT INVALIDO, ingrese otro: "); scanf("%s", &rut); } else printf("es rut\n"); return 0; getche(); }
Ingrese un codigo numerico y punka.... 
|
|
|
|
|
3
|
Programación / Programación C/C++ / validador hecho en c, conpila pero no funciona
|
en: 02 Septiembre 2008, 13:53
|
Holas: hace milenios, que no he venido por aqui pero aki estoy.  . Aqui tengo en código C, un validador...el problema es que le ingreso solo digitos y aparece el mensaje de error. Busco saber porque dice error...y me aparece un signo de exclamación por pantalla, sin averlo invocado antes!!!!!  . Si encuentran algún error, por favor, háganlo saber Hecho con dev-c++ 4.9.9.2 Entorno window$. #include <string.h> #include <stdio.h> #include <ctype.h>
/**Este metodo valida si el rut ingresado son solo numeros */ int main(){ /**He aqui la variable rut en formato char para hacer corroboraciones*/ char rut[7]; int i=0;
printf("Ingrese RUT: "); scanf("%s", &rut[7]); /*Para validar esto se ocupa la funcion isdigit*/
while(rut[i]!=7) { if( isdigit(rut[i])==0){ printf("%c, %d\n", rut[i], isdigit(rut[i])); printf("RUT INVALIDO, ingrese otro: "); scanf("%s", &rut[7]); } else i++;
}
return 0; getchar(); }
|
|
|
|
|
8
|
Programación / Programación C/C++ / Re: un asunto que en apariencia funciona pero no hace nada
|
en: 16 Mayo 2008, 00:14
|
lo arregle!!!!  pero aun me faltan cosas por resolver...por ejemplo aparece por pantalla pero NO GUARDA EN TXT LOS datos ingresados.  #include <stdio.h> #include <string.h>
typedef struct _proyecto { char name_inmobiliaria[10]; char name_proyecto[15]; char comuna[15]; char direccion[20]; int cant_inmuebles; int cant_vendida; int valor_min; int valor_max; struct _proyecto *siguiente; }proyecto; proyecto *proyectos;
proyecto *crea_nodo_proyecto(char name_inmobiliaria[10], char name_proyecto[15], char comuna[15], char direccion[20], int cant_inmuebles, int cant_vendida, int valor_min, int valor_max) { proyecto *nuevo; nuevo=(proyecto *)malloc(sizeof(proyecto)); strcpy(nuevo->name_inmobiliaria, name_inmobiliaria); strcpy(nuevo->name_proyecto, name_proyecto); strcpy(nuevo->comuna, comuna); nuevo->cant_inmuebles=cant_inmuebles; nuevo->cant_vendida=cant_vendida; nuevo->valor_min=valor_min; nuevo->valor_max=valor_max; nuevo->siguiente=NULL; return(nuevo); }
void insertar_proyecto_ordenado(char *name_inmobiliaria, char *name_proyecto, char *comuna, char *direccion, int cant_inmuebles ,int cant_vendida,int valor_min,int valor_max) { proyecto *actual, *nuevo, *anterior, *tmp1, *tmp2; char temp [10]; actual=anterior=proyectos; nuevo=crea_nodo_proyecto(name_inmobiliaria,name_proyecto,comuna,direccion,cant_inmuebles,cant_vendida,valor_min,valor_max); if(proyectos == NULL) { /*si no existe nodo*/ proyectos=nuevo; printf("Aki1"); } else{ /*revisa si el dato del nodo a ingresar es menor que la cabeza*/ if(strncmp(proyectos->name_inmobiliaria, nuevo->name_inmobiliaria, 10)>0) { nuevo->siguiente = proyectos; proyectos=nuevo; printf("\nAki2"); } else{ /*tiene un solo elemento en la lista, y como ya se comprobo si el dato del nuevo nodo era menor que la cabeza, significa que este es mayor o igual a ella*/ if(proyectos->siguiente == NULL){ proyectos->siguiente = nuevo; printf("\nAki3"); }/*tiene mas de 2 elementos en la lista*/ else{ /*se referencian los punteros temporales para luego recorrer la lista*/ tmp1=proyectos; tmp2=proyectos->siguiente; printf("\nAki4"); /*se recorre la lista comprobando si no se llego al final y si el dato del nuevo nodo es mayor que los datos de los nodos de la lista */ while( strncmp(tmp2->name_inmobiliaria, nuevo->name_inmobiliaria, 10)<0 && (tmp2->siguiente != NULL) ){ tmp1=tmp2; tmp2=tmp2->siguiente; } /*hay dos formas que pare el ciclo anterior, una es que el elemento a insertar se encuentra en los elementos del centro de la lista, y la otra si se llega al ultimo nodo*/ /*si se llego al ultimo nodo*/ if(tmp2->siguiente == NULL){ /*si el dato del nuevo nodo es menor que el nodo final de la lista*/ if(strncmp(tmp2->name_inmobiliaria, nuevo->name_inmobiliaria, 10)>0){ nuevo->siguiente = tmp2; tmp1->siguiente=nuevo; }/*el dato del nuevo nodo es el mayor de toda la lista*/ else{ tmp2->siguiente = nuevo; } }/*se inserta en el sector medio de la lista*/ else{ tmp1->siguiente=nuevo; nuevo->siguiente=tmp2; } } } } }
void mostrar_solo_proyectos(proyecto *proyectos) { proyecto *aux; aux=proyectos; printf("\n \x10 \x10\x10 LISTA DE PROYECTOS \n"); printf("INMOBILIARIA\tPROYECTO\tCOMUNA\tDIRECCION\tTOTAL\tVENDIDOS\tDESDE\tTOPE\n"); while (aux!=NULL) { printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%d\n", aux->name_inmobiliaria, aux->name_proyecto, aux->comuna, aux->direccion, aux->cant_inmuebles, aux->cant_vendida, aux->valor_min, aux->valor_max); aux=aux->siguiente; } }
void insertar_proyecto() { char name_inmobiliaria[15]; char name_proyecto[15]; char comuna[15]; char direccion[20]; int cant_inmuebles; int cant_vendida; int valor_min; int valor_max; printf("Ingrese el nombre de la inmobiliaria:\n"); scanf("%s", &name_inmobiliaria); printf("Ingrese el proyecto de la inmobiliaria:\n"); scanf("%s", &name_proyecto); printf("Ingrese la comuna del proyecto:\n"); scanf("%s", &comuna); printf("Ingrese la direccion del proyecto:\n"); scanf("%s", &direccion); printf("Ingrese la cantidad de inmuebles del proyecto:\n"); scanf("%d", &cant_inmuebles); printf("Ingrese la cantidad vendida de inmuebles del proyecto:\n"); scanf("%d", &cant_vendida); printf("Ingrese el valor minimo del proyecto:\n"); scanf("%d", &valor_min); printf("Ingrese el valor maximo del proyecto:\n"); scanf("%d", &valor_max); insertar_proyecto_ordenado(name_inmobiliaria,name_proyecto,comuna,direccion,cant_inmuebles,cant_vendida,valor_min,valor_max); } void guardar_proyecto(proyecto *proyectoss) { FILE *fileProyecto; fileProyecto = fopen("proyecto.txt", "w"); proyecto *temp; temp = proyectos; while (temp) { fprintf(fileProyecto, "%s*", temp->name_inmobiliaria); fprintf(fileProyecto, "%s*", temp->name_proyecto); fprintf(fileProyecto, "%s*", temp->comuna); fprintf(fileProyecto, "%s*", temp->direccion); fprintf(fileProyecto, "%i*", temp->cant_inmuebles); fprintf(fileProyecto, "%i*", temp->cant_vendida); fprintf(fileProyecto, "%i*", temp->valor_min); fprintf(fileProyecto, "%i\n", temp->valor_max);
temp = temp->siguiente; } fclose(fileProyecto); } void cargar_proyectos() { FILE *file; int count=0; char *tmp=0; char temp[100]=" "; char eol[1]="\n"; //end of line char separar[3]="/n*"; //caracter que avisa su separacion int i=0; int j=0; //variables de origen temporal que seran de tipo char char name_inmobiliaria[10]; char name_proyecto[15]; char comuna[15]; char direccion[20]; char cant_inmuebles_char[2]; int cant_inmuebles; char cant_vendida_char[2]; int cant_vendida; char valor_min_char[6]; //los valores son en UF int valor_min; char valor_max_char[6]; int valor_max; int no_final=0; file=fopen("proyectos.txt", "r"); if (file==NULL) { printf("\n ********* ADVERTENCIA***********\n"); printf("No existe el archivo de datos proyectos.txt\n"); printf("Se creara uno nuevo...\n\n"); file=freopen("proyectos.txt","w",stdout);//aqui se construye uno novo. return; } while (!feof(file)) { temp[i]=fgetc(file); while(temp[i]!=eol[0] && !feof(file)) { i++; temp[i]=fgetc(file); count++; no_final=1; } if (no_final==0) return; while(count<100) { temp[i]=' '; i++; count++; } tmp = strtok(temp,separar); strcpy(name_inmobiliaria,tmp); //pedazo del nombre de inmobiliaria tmp = strtok(NULL,separar); strcpy(name_proyecto,tmp); tmp = strtok(NULL,separar); strcpy(comuna,tmp); tmp = strtok(NULL,separar); strcpy(direccion,tmp); tmp = strtok(NULL,separar); strcpy(cant_inmuebles_char,tmp); cant_inmuebles=atoi(cant_inmuebles_char); strcpy(cant_vendida_char, tmp); cant_vendida=atoi(cant_vendida_char); tmp=strtok(NULL,separar); strcpy(valor_min_char, tmp); valor_min=atoi(valor_min_char); tmp=strtok(NULL,separar); strcpy(valor_max_char, tmp); valor_max=atoi(valor_max_char); insertar_proyecto_ordenado(name_inmobiliaria,name_proyecto,comuna, direccion, cant_inmuebles,cant_vendida,valor_min,valor_max); i=0; count=0; no_final=0; } fclose(file); }
int main(){ printf("cargando proyectos..."); cargar_proyectos(proyectos); insertar_proyecto(proyectos); guardar_proyecto(proyectos); mostrar_solo_proyectos(proyectos); getche(); return 0; }
|
|
|
|
|
9
|
Programación / Programación C/C++ / un asunto que en apariencia funciona pero no hace nada
|
en: 15 Mayo 2008, 03:42
|
 dado un fichero de extensión *.txt, debe leerlo y almacenarlo en nodos de listas enlazadas. ej: Paz*ElOsito*Santiago*Mercedes666*23*19*1111*33333 #include <stdio.h> #include <string.h>
typedef struct _proyecto { char name_inmobiliaria[10]; char name_proyecto[15]; char comuna[15]; char direccion[20]; int cant_inmuebles; int cant_vendida; int valor_min; int valor_max; struct _proyecto *siguiente; }proyecto; proyecto *proyectos;
proyecto *crea_nodo_proyecto(char name_inmobiliaria[10], char name_proyecto[15], char comuna[15], char direccion[20], int cant_inmuebles, int cant_vendida, int valor_min, int valor_max) { proyecto *nuevo; nuevo=(proyecto *)malloc(sizeof(proyecto)); strcpy(nuevo->name_inmobiliaria, name_inmobiliaria); strcpy(nuevo->name_proyecto, name_proyecto); strcpy(nuevo->comuna, comuna); nuevo->cant_inmuebles=cant_inmuebles; nuevo->cant_vendida=cant_vendida; nuevo->valor_min=valor_min; nuevo->valor_max=valor_max; nuevo->siguiente=NULL; return(nuevo); }
void insertar_proyecto_ordenado(char *name_inmobiliaria, char *name_proyecto, char *comuna, char *direccion, int cant_inmuebles ,int cant_vendida,int valor_min,int valor_max) { proyecto *actual, *nuevo, *anterior, *tmp1, *tmp2; char temp [20]; actual=anterior=proyectos; nuevo=crea_nodo_proyecto(name_inmobiliaria,name_proyecto,comuna,direccion,cant_inmuebles,cant_vendida,valor_min,valor_max); if(proyectos == NULL) { /*si no existe nodo*/ proyectos=nuevo; } else{ /*revisa si el dato del nodo a ingresar es menor que la cabeza*/ if(strncmp(proyectos->name_inmobiliaria, nuevo->name_inmobiliaria, 20)>0) { nuevo->siguiente = proyectos; proyectos=nuevo; } else{ if(proyectos->siguiente == NULL){ proyectos->siguiente = nuevo; } else{ tmp1=proyectos; tmp2=proyectos->siguiente; while( strncmp(tmp2->name_inmobiliaria, nuevo->name_inmobiliaria, 20)<0 && (tmp2->siguiente != NULL) ){ tmp1=tmp2; tmp2=tmp2->siguiente; } /*si se llego al ultimo nodo*/ if(tmp2->siguiente == NULL){ /*si el dato del nuevo nodo es menor que el nodo final de la lista*/ if(strncmp(tmp2->name_inmobiliaria, nuevo->name_inmobiliaria, 20)>0){ nuevo->siguiente = tmp2; tmp1->siguiente=nuevo; }/*el dato del nuevo nodo es el mayor de toda la lista*/ else{ tmp2->siguiente = nuevo; } }/*se inserta en el sector medio de la lista*/ else{ tmp1->siguiente=nuevo; nuevo->siguiente=tmp2; } } } } }
void mostrar_solo_proyectos(proyecto *proyectos) { proyecto *aux; aux=proyectos; printf("\n /x10 ********** LISTA DE PROYECTOS *********\n"); printf("INMOBILIARIA\tPROYECTO\tCOMUNA\tDIRECCION\t\tTOTAL INMUEBLES\tVENDIDOS\tDESDE\tTOPE\n"); while (aux) { printf("%s\t%s\t%s\t%s\t\t%d\t%d\t%d\t%d\n", aux->name_inmobiliaria, aux->name_proyecto, aux->comuna, aux->direccion, aux->cant_inmuebles, aux->cant_vendida, aux->valor_min, aux->valor_max); aux=aux->siguiente; } } void cargar_proyectos() { FILE *file; int count=0; char *tmp=0; char temp[100]=" "; char eol[1]="\n"; //end of line char separar[3]="/n*"; //caracter que avisa su separacion int i=0; int j=0; //variables de origen temporal que seran de tipo char char name_inmobiliaria[10]; char name_proyecto[15]; char comuna[15]; char direccion[20]; char cant_inmuebles_char[2]; int cant_inmuebles; char cant_vendida_char[2]; int cant_vendida; char valor_min_char[6]; //los valores son en UF int valor_min; char valor_max_char[6]; int valor_max; int no_final=0; file=fopen("proyectos.txt", "r"); if (file==NULL) { printf("\n ********* ADVERTENCIA***********\n"); printf("No existe el archivo de datos proyectos.txt\n"); printf("Se creara uno nuevo...\n\n"); file=freopen("proyectos.txt","w",stdout);//aqui se construye uno novo. return; } while (!feof(file)) { temp[i]=fgetc(file); while(temp[i]!=eol[0] && !feof(file)) { i++; temp[i]=fgetc(file); count++; no_final=1; } if (no_final==0) return; while(count<100) { temp[i]=' '; i++; count++; } tmp = strtok(temp,separar); strcpy(name_inmobiliaria,tmp); //pedazo del nombre de inmobiliaria tmp = strtok(NULL,separar); //aqui parten los problemas T.T strcpy(name_proyecto,tmp); tmp = strtok(NULL,separar); strcpy(comuna,tmp); tmp = strtok(NULL,separar); strcpy(direccion,tmp); tmp = strtok(NULL,separar); strcpy(cant_inmuebles_char,tmp); cant_inmuebles=atoi(cant_inmuebles_char); strcpy(cant_vendida_char, tmp); cant_vendida=atoi(cant_vendida_char); tmp=strtok(NULL,separar); strcpy(valor_min_char, tmp); valor_min=atoi(valor_min_char); tmp=strtok(NULL,separar); strcpy(valor_max_char, tmp); valor_max=atoi(valor_max_char); insertar_proyecto_ordenado(name_inmobiliaria,name_proyecto,comuna, direccion, cant_inmuebles,cant_vendida,valor_min,valor_max); i=0; count=0; no_final=0; } fclose(file); }
int main(){ proyecto *proyectos; printf("cargando proyectos..."); cargar_proyectos(); void mostrar_solo_proyectos(proyecto *proyectos); printf("\nmostrando proyectos"); getche(); return 0; }
Sucede que no aparece lo que contiene el archivo. Usando dev-c++, no me tira errores y tampoco me arroja violacion de acceso de memoria.
|
|
|
|
|
12
|
Programación / Ejercicios / Re: ejercicio 122 de C: pido ayuda -error en plena ejecución-
|
en: 08 Marzo 2008, 18:29
|
gracias por la observación flakito81, pero se sigue cayendo....  #include <stdio.h> #include <stdlib.h> #define max 10
int main(){ int i; char ifilename[] = "diccionario.txt"; char palabra[20]; char idChar; FILE *ifp; //apuntador a archivo ifp = fopen(ifilename, "a+");// abre el archivo para add info. //Si no existia se crea uno nuevo. if(ifp==NULL){ printf("Error al abrir fichero diccionario.txt"); exit(0); } for(i=0;i<max;i++){ printf("Ingrese una palabra a continuacion:"); scanf("%s", &palabra); fprintf(ifp, "%s\n", palabra); } fclose(ifp); ifp = fopen(ifilename, "r");// abre el archivo para add info. //Si no existia se crea uno nuevo. if(ifp==NULL){ printf("Error al abrir fichero diccionario.txt"); exit(0); } while(fscanf(ifp, "%s", idChar) != EOF)//mientras no llegue al fin { printf("%s", idChar); //de archivo se escriben } //por pantalla los datos. fclose(ifp); //cierra el archivo
return 0; }
|
|
|
|
|
13
|
Forums Generales / Foro Libre / Re: "Amigo" la peor palabra que puedes escuchas de una mujer
|
en: 07 Marzo 2008, 22:33
|
si van a follar...su lindo trasero se han de cuidar...porque sino el SIDA los puede matar...  _______________________________________________________________________ Volviendo al tema: Yo por mi parte...he dejado a algunos chicos que "eran amigos", no por culpa de un fulano, sino porque estos "amigos", eran muyyyyyy sobrados, es decir, nesecitaban un ente que corriera tras de ellos, pero ellos se quedaban quietos si yo no les dirigía la palabra. Asi que revisen su comportamiento antes de qejarse "¿Por qué no me ama?" Ahora si son amables y generosos, debe ser MUY frustrante eso  , pero el único comodín que puedes tener a cambio, es que si el galán  , es un rufián, tiene el plus de buscar instancias que le abran los ojos a la "amiga".  ...
|
|
|
|
|
15
|
Programación / Ejercicios / ejercicio 122 de C: pido ayuda -error en plena ejecución-
|
en: 07 Marzo 2008, 19:22
|
Hola: Como verán soy n00b en este foro  y ayer me interesé en coger uno de los ejercicios de C y me gustó uno en particular que maneja ficheros: Enunciado: Escribir un programa que solicite palabras y las agrege a un fichero llamado c:\diccionario de forma que luego se puedan consultar las palabras una a una. Bueno ....para ver si el programa efectivamente guardaba las palabras, modifique el ejercicio y en vez de consultar, quería mostrar las palabras guardadas. El problema, que usando Dev-c++(S.O. Windows XP), no arroja errores o advertencias, pero a la hora de ejecutar el programa, arroja un error algo así como..."este programa ha cometido un error y debe cerrarse". Supongo que es un error con punteros. #include <stdio.h> #include <stdlib.h> #define max 10
int main(){ int i; char ifilename[] = "diccionario.txt"; char palabra[20], idChar; FILE *ifp; //apuntador a archivo ifp = fopen(ifilename, "a+");// abre el archivo para add info. //Si no existia se crea uno nuevo. if(ifp==NULL){ printf("Error al abrir fichero diccionario.txt"); exit(0); } for(i=0;i<max;i++){ printf("Ingrese una palabra a continuacion:"); scanf("%s", &palabra); fprintf(ifp, "%s\n", palabra); } fclose(ifp); ifp = fopen(ifilename, "r");// abre el archivo para add info. //Si no existia se crea uno nuevo. if(ifp==NULL){ printf("Error al abrir fichero diccionario.txt"); exit(0); } while(fscanf(ifp, "%s", &idChar) != EOF)//mientras no llegue al fin { printf("%s", idChar); //de archivo se escriben } //por pantalla los datos. fclose(ifp); //cierra el archivo
return 0; } Si alguien se la puede con el ejercicio, por favor, responder. 
|
|
|
|
|
|
| |
|