|
142
|
Programación / Programación C/C++ / Re: Duda programa con estructuras de control
|
en: 10 Noviembre 2011, 10:48 am
|
Hola else { return 0; }
He añadido esto cada vez que comprobamos un carácter de los introducidos. Tú compruebas si son caracteres válidos con los if, pues si no son válidos entra en el else e imprime un mensaje por pantalla. El while lo que hace es limpiar el buffer de entrada y el getchar de detrás del while espera a que pulses una tecla, y el return para finalizar el programa. Al final de todo pasa lo mismo, limpiamos el buffer de entrada y el programa espera a que se pulse una tecla. Espero que lo hayas entendido. Hay gente que para pausar el programa utiliza un system("pause"); pero eso solo funciona en windows, el getchar es estandar. Saludos
|
|
|
143
|
Programación / Programación C/C++ / Re: Duda programa con estructuras de control
|
en: 9 Noviembre 2011, 22:54 pm
|
Hola ¿Es esto lo que pides?? #include <stdio.h> int main () { char car1; char car2; char valor1; char valor2; int valor; printf("Introduzca un valor hexadecimal:\n"); scanf("\n%c%c", &car1 , &car2 ); if('0'<=car1 && car1<='9') valor1=car1-'0'; else if ('A'<=car1 && car1<='F') valor1=car1-'A'+10; else if ('a'<=car1 && car1<='f') valor1=car1-'a'+10; else { return 0; } if('0'<=car2 && car2<='9') valor2=car2-'0'; else if ('A'<=car2 && car2<='F') valor2=car2-'A'+ 10; else if ('a'<=car2 && car2<='f') valor2=car2-'a'+10; else { return 0; } valor= 16*valor1 + valor2; printf("EL valor decimal de 0x%c%c es %d\n",car1 ,car2 ,valor ); return 0; }
Saludos
|
|
|
146
|
Programación / Programación C/C++ / Re: ¿Error código?
|
en: 3 Noviembre 2011, 22:30 pm
|
Hola Veo 2 errores: -Las comparaciones se hacen con == no con = (que es asignación) (linea 17) -El error que te da es por poner else (a<b), las condiciones solo se ponen en el if no en el else, es decir, si se cumple la condición del if entra, si no se cumple entra en el else, por tanto debes quitar el (a<b) y dejar el else solo #include <stdio.h> int main() { int a,b,c; if (a>b) printf("%d es mayor que %d", a ,b ); else if (a==b) printf("%d es igual que %d", a ,b ); else printf("%d es menor que %d", a ,b ); /*Línea 21*/ return 0; }
Saludos
|
|
|
147
|
Programación / Programación C/C++ / Re: unir cadenas mediante punteros
|
en: 3 Noviembre 2011, 20:12 pm
|
Hola No se si funcionará pero sería una idea: void reverse(char *punt,char *puntt) { int largo1=0, largo2=0, lg=0, i; char *aux = punt, *aux2 = puntt; while(*punt!='\0') { punt++; largo1++; } while(*puntt!='\0') { puntt++; largo2++; } lg=largo1+largo2; char largos[lg]; for(i=0; i<largo1; i++) { largos[i] = *aux; aux++; } for(; i<lg; i++) { largos[i] = *aux2; aux2++; } }
Saludos
|
|
|
148
|
Programación / Programación C/C++ / Re: programacion en turbo c++
|
en: 3 Noviembre 2011, 17:09 pm
|
Hola Tienes algunos errores de concepto, deberías coger un buen libro y comenzar con él, además mezclas C con C++, utilizas conio (que está obsoleta), etc. Puedes encontrar buenos libros aquí, además te vendrá bien leerte estoComo al menos lo has intentado te lo resuelvo, pero no te acostumbres #include <cstring> #include <iostream> using namespace std; bool palindroma(char *palabra, int inicio, int lon) { if(palabra[inicio] != palabra[lon]) return false; if(inicio < lon) return palindroma(palabra, inicio+1, lon-1); return true; } int main() { int n = 0, opcion; char b = 'n'; char palabra[100]; memset(&palabra, 0x00, 100); while (b == 'n') { cout << "\n\n\t\tPrograma que indica si una palabra es polindroma.\n"; cout << "\t\t***************************************************\n\n"; cout << "\t1] Escribir una palabra\n"; cout << "\t2] Saber si es polindroma\n"; cout << "\t3] Contar\n"; cout << "\t4] Salir\n"; cout << "\n\n\tOpcion: "; cin >> opcion; switch(opcion) { case 1: cout << "\n\tIntroduce una palabra: "; cin >> palabra; n=strlen(palabra); cout << "\n\tOK. Pulse una tecla para continuar..."; while(cin.get() != '\n'); cin.get(); break; case 2: if(n != 0) { if(palindroma(palabra, 0, n-1)) cout << "\n\tLa palabra \"" << palabra << "\" es palindroma" << endl; else cout << "\n\tLa palabra \"" << palabra << "\" NO es palindroma" << endl; } else cout << "\n\tDebes introducir una palabra antes. Opcion 1 del menu" << endl; cout << "\n\tOK. Pulse una tecla para continuar..."; while(cin.get() != '\n'); cin.get(); break; case 3: if(n != 0) cout << "\n\tLa palabra \"" << palabra << "\" tiene " << n << " letras" << endl; else cout << "\n\tDebes introducir una palabra antes. Opcion 1 del menu" << endl; cout << "\n\tOK. Pulse una tecla para continuar..."; while(cin.get() != '\n'); cin.get(); break; case 4: cout << "\n\tHa selecionado salir, desea continuar? (s/n): "; cin >> b; break; default: cout << "\n\tOpcion incorrecta. Pulsa una tecla para continuar..."; while(cin.get() != '\n'); cin.get(); } } cout << endl << endl << endl; return 0; }
Saludos
|
|
|
150
|
Programación / Programación C/C++ / Re: [Ayuda] Eliminar entradas en un binario
|
en: 30 Octubre 2011, 22:24 pm
|
Hola Tienes algunos errores de concepto, para borrar un registro de un fichero tienes que guardar los válidos en otro fichero y luego cambias el nombre del nuevo fichero. Te pongo el código, aunque no lo he probado (paso de los errores por culpa de conio) void baja() { int encontrado=0, ok=0, posicion=0; struct dato aux; char palabra[20], opc='n'; FILE *fic_aux; archivo = fopen(DICCIONARIO ,"r+b"); if(archivo != NULL) { fseek(archivo , 0, SEEK_END ); { fseek(archivo , 0, SEEK_SET ); memset(&aux , 0x00, sizeof(struct dato )); printf("ELIMINAR PALABRAS\n"); printf("\n Ingrese la palabra a eliminar: "); strlwr(palabra); while(encontrado ==0 && !feof(archivo )) { fread(&aux , sizeof(struct dato ), 1, archivo ); if(strcmp(palabra , aux. palabra) == 0) encontrado=1; }//while if(encontrado == 1) { printf("\n Esta seguro que desea eliminar la entrada del diccionario (s/n)\n"); printf("\n Palabra: %s \n Sinonimos: %s %s %s\n Antonimo: %s\n Paronimo: %s\n",aux. palabra,aux. sinonimo1,aux. sinonimo2,aux. sinonimo3,aux. antonimo,aux. paronimo); if(opc=='s' || opc=='S') { fseek(archivo , -(sizeof(struct dato )), SEEK_CUR ); posicion = ftell(archivo ); fseek(archivo , 0, SEEK_SET ); fic_aux = fopen("Auxiliar.bin", "wb"); if(aux) { while(ftell(archivo ) < posicion ) { fread(&aux , sizeof(struct dato ), 1, archivo ); fwrite(&aux , sizeof(struct dato ), 1, fic_aux ); } //Adelantamos una posición el cursor fread(&aux , sizeof(struct dato ), 1, archivo ); { fread(&aux , sizeof(struct dato ), 1, archivo ); fwrite(&aux , sizeof(struct dato ), 1, fic_aux ); } } } } else printf("\n No se encontro la palabra ingresada\n"); } else printf("\nEl fichero esta vacio\n"); rename("Auxiliar.bin", DICCIONARIO ); } else printf("No se pudo abrir al fichero"); }//void
Saludos
|
|
|
|
|
|
|