|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / Programación C/C++ / Re: Convertir decimal a diferentes bases
|
en: 7 Marzo 2015, 23:33 pm
|
Muchas gracias! Aún no tengo claro con qué podría sustituir el new char, ya que mi propósito es usar C; he leído algo sobre malloc, pero no se como usarlo. Tampoco estoy seguro de por qué se debe de usar esto: resultado[j] = char('0' + n[i]); Y esto: Ademas quisiera saber por qué en algunos char se debe poner char*, me dijeron que para que funcionara debía ponerlo, pero no se por qué. En cuanto a conio, ya aprendí a no usarlo, te agradezco mucho la ayuda El código quedó asi: #include <stdio.h> #include <stdlib.h>
char* conversion(int num, int base) { char* resultado = new char[20]; int i = 0; //contador de posicion. int n[20]; while(num > 0) { n[i] = num % base; num = num / base; i++; } i--; int j = 0; //contador para resultado. while(i >=0) { if(n[i] >= 0 && n[i] <= 9) { resultado[j] = char('0' + n[i]); } else { switch(n[i]) { case 10: resultado[j] = 'A'; break; case 11: resultado[j] = 'B'; break; case 12: resultado[j] = 'C'; break; case 13: resultado[j] = 'D'; break; case 14: resultado[j] = 'E'; break; case 15: resultado[j] = 'F'; break; } } i--; j++; } resultado[j] = '\0'; return resultado; }
int main() { int num, base; int continuar = 0; while (continuar == 0) { printf("Aqui puedes convertir un numero decimal a cualquier base entre 2 y 16.\n\nIngresa el numero a convertir: "); scanf("%d", &num); printf("\nA que base quieres convertirlo? "); scanf("%d", &base); printf("El numero %d en base %d es: %s", num, base, conversion(num, base)); printf("\n\nQuieres convertir otro numero? Si=0/No=1 "); scanf("%d", &continuar); system("cls"); } printf("Presiona enter para salir..."); getchar(); }
|
|
|
2
|
Programación / Programación C/C++ / Convertir decimal a diferentes bases
|
en: 6 Marzo 2015, 05:27 am
|
Hola, tengo que hacer un programa que convierta un numero decimal dado a una base dada. Tengo hecho un código que considero está bien, pero no entiendo por qué no me da ningún resultado, y me urge que funcione, les agradecería si alguien me ayuda #include <stdio.h> #include <conio.h> #include <stdlib.h>
char* conversion(int num, int base) { char* resultado = new char[20]; int i = 0; //contador de posicion. int n[20]; while(num > 0) { n[i] = num % base; num = num / base; i++; } int j = 0; //contador para resultado. while(i >=0) { if(n[i] >= 0 && n[i] <= 9) { resultado[j] = char(n[i]); } else { switch(n[i]) { case 10: resultado[j] = 'A'; break; case 11: resultado[j] = 'B'; break; case 12: resultado[j] = 'C'; break; case 13: resultado[j] = 'D'; break; case 14: resultado[j] = 'E'; break; case 15: resultado[j] = 'F'; break; } } i--; j++; } return resultado; }
int main() { int num, base; int continuar = 0; while (continuar == 0) { printf("Aqui puedes convertir un numero decimal a cualquier base entre 2 y 16.\n\nIngresa el numero a convertir: "); scanf("%d", &num); printf("\nA que base quieres convertirlo? "); scanf("%d", &base); printf("El numero %d en base %d es: ", num, base); conversion(num, base); printf("\n\nQuieres convertir otro numero? Si=0/No=1 "); scanf("%d", &continuar); system("cls"); } printf("Presiona enter para salir..."); getch(); }
|
|
|
3
|
Programación / Programación C/C++ / Re: Buscar una cadena en un archivo.
|
en: 24 Diciembre 2014, 02:44 am
|
Hola, ¡gracias a todos! Ya logré hacerlo funcionar Lo del return no lo sabía engel lex, ¿me podrías explicar por qué se usa? Y sobre el strcmpi leí que sirve para comparar las cadenas sin distinguir entre mayúsculas y minúsculas, por eso lo usé. rir3760 gracias a tu explicación entendí por qué se debe usar fgets. Muchas gracias a ambos y me disculpo por tantas dudas, soy principiante y no se mucho aún. Aquí les dejo el código como quedó funcionando bien. #include <stdio.h> #include <string.h> #include <locale.h> #include <stdlib.h>
int main() { setlocale(LC_ALL, "spanish"); //Sirve para usar caracteres especiales del español. FILE *archivo; char buscar[100]; char cadena1[100]; char cadena2[100]; char cadena3[100]; char cadena4[100]; int continuar, vaciarmem; archivo = fopen("C:\\Users\\Axel\\Documents\\Ejemplo.txt", "r"); fgets(cadena1, 100, archivo); fgets(cadena2, 100, archivo); fgets(cadena3, 100, archivo); fgets(cadena4, 100, archivo);
continuar = 0; while (continuar == 0) { printf("¿Qué cadena quieres buscar? "); fgets(buscar, 100, stdin); if (strcmpi(cadena1, buscar) == 0) { printf("\nLa cadena que buscas está en el archivo, y se encuentra en la primera línea."); } else if (strcmpi(cadena2, buscar) == 0) { printf("\nLa cadena que buscas está en el archivo, y se encuentra en la segunda línea."); } else if (strcmpi(cadena3, buscar) == 0) { printf("\nLa cadena que buscas está en el archivo, y se encuentra en la tercera línea."); } else if (strcmpi(cadena4, buscar) == 0) { printf("\nLa cadena que buscas está en el archivo, y se encuentra en la cuarta línea."); } else { printf("\nLa cadena que buscas no se encuentra en el archivo."); } printf("\n\n¿Quieres buscar otra cadena? 0 = Si / 1 = No "); scanf("%d", &continuar); while ((vaciarmem = getchar()) != '\n' && vaciarmem != EOF); //Sirve para vaciar el buffer o memoria, mas info. en http://www.taringa.net/post/ciencia-educacion/14450390/Lectura-de-cadenas-en-C.html system("cls"); } fclose(archivo); printf("Presiona enter para salir..."); getchar(); } También me gustaría saber cómo funciona el segundo while que sirve para vaciar la memoria y evitar que se salte todos los fgets en el primero. Gracias
|
|
|
4
|
Programación / Programación C/C++ / Buscar una cadena en un archivo.
|
en: 23 Diciembre 2014, 04:46 am
|
Hola. Debo hacer un programa que busque una cadena dada en un archivo existente, el problema es que al parecer hay algo mal en la comparación y no se que es que me dice que la cadena no existe, espero me puedan ayudar. El código para crear el archivo es este: #include <stdio.h> #include <conio.h> #include <string.h>
int main() { FILE *archivin; char cadenita1[]= "Prueba de creacion de archivo\n"; char cadenita2[]= "Ya casi estamos de vacaciones\n"; char cadenita3[]= "Pero vamos a reprobar psicologia\n"; char cadenita4[]= "Vamos a regresar en enero\n";
archivin = fopen("C:\\Users\\Axel\\Documents\\Archivo info.txt", "wt"); fputs(cadenita1, archivin); fputs(cadenita2, archivin); fputs(cadenita3, archivin); fputs(cadenita4, archivin); fclose(archivin); printf("El archivo ha sido creado y/o modificado."); getch(); } EL código para comparar y buscar es este: #include <stdio.h> #include <conio.h> #include <string.h> #include <locale.h>
int main() { setlocale(LC_ALL, "spanish"); FILE *archivo; char buscar[100]; char cadena1[100]; char cadena2[100]; char cadena3[100]; char cadena4[100]; archivo = fopen("C:\\Users\\Axel\\Documents\\Archivo info.txt", "r"); fgets(cadena1, 100, archivo); fgets(cadena2, 100, archivo); fgets(cadena3, 100, archivo); fgets(cadena4, 100, archivo); printf("¿Qué cadena quieres buscar? "); gets(buscar); if (strcmpi(cadena1, buscar) == 0) { printf("\n\nLa cadena que buscas está en el archivo, y se encuentra en la primera línea."); } else if (strcmpi(cadena2, buscar) == 0) { printf("\n\nLa cadena que buscas está en el archivo, y se encuentra en la segunda línea."); } else if (strcmpi(cadena3, buscar) == 0) { printf("\n\nLa cadena que buscas está en el archivo, y se encuentra en la tercera línea."); } else if (strcmpi(cadena4, buscar) == 0) { printf("\n\nLa cadena que buscas está en el archivo, y se encuentra en la cuarta línea."); } else { printf("\n\nLa cadena que buscas no se encuentra en el archivo."); } fclose(archivo); getch(); } Como dije, el problema es que siempre me dice que la cadena no se encuentra en el archivo. Haciendo pruebas, comparé buscar con buscar y si funcionó, entonces no se que error haya al comparar con la cadena.
|
|
|
6
|
Programación / Programación C/C++ / Re: Identificar frases palíndromas
|
en: 15 Noviembre 2014, 23:33 pm
|
Les agradezco mucho a todos, ahora ya pude comprender mejor como lo hace Solo tengo una duda en la respuesta de leosansan, el código funciona, pero ¿Por qué le restas 1 en la parte de frase3[letra2 - 1]? Eso es lo único que no entiendo, y repito muchas gracias a todos. * Lo anterior lleva al uso de una tercera cadena para guardar frase1 igual a frase2: for (letra1 = 0; letra1 <= strlen(frase1) ; letra1++) if (frase1[letra1] != ' ') frase2[letra2++] = frase1[letra1] , [u]frase3[letra2 - 1][/u] = frase1[letra1];
|
|
|
7
|
Programación / Programación C/C++ / Identificar frases palíndromas
|
en: 15 Noviembre 2014, 06:10 am
|
Hola a todos, tengo que hacer un programa que identifique las frases palíndromas. Tengo este código, pero falla en el if al comprobar la cadena con la cadena invertida: #include <stdio.h> #include <conio.h> #include <string.h>
int main() { char frase1[100]; char frase2[100]; printf("Aqui puedes identificar frases palindromas\n\nEscribe tu frase: "); gets(frase1); int letra1 = 0; int letra2 = 0; for (letra1 = 0; letra1 <= strlen(frase1) ; letra1++) { if (frase1[letra1] != ' ') { frase2[letra2++] = frase1[letra1]; } } strlwr(frase2); printf("%s", frase2); if (frase2 == strrev(frase2)) { printf("\nTu frase es palindroma!"); } else { printf("\nTu frase no es palindroma!"); } }
|
|
|
8
|
Programación / Programación C/C++ / Re: Cambio en billetes y monedas en C++
|
en: 2 Octubre 2014, 00:18 am
|
Caster si,pero qué pasa si pago con un 780? Te lo agradezco. eferion, tienes razón, no me había dado cuenta de eso, y la división la puse solo para evitarme cualquier posible error. Muchas gracias a ambos, intentare para ver si puedo resolverlo.
Ya corregí eso y sigue sin salir, no se que esté mal.
|
|
|
9
|
Programación / Programación C/C++ / Cambio en billetes y monedas en C++
|
en: 1 Octubre 2014, 23:07 pm
|
Hola, espero puedan ayudarme, tengo que devolver el cambio en billetes de 200, 100, 50, 20 y monedas de 10, 5, 2, 1 es basándome en este código (la parte importante es la subrayada), funciona bien con los billetes, pero en las monedas me da de más o de menos: int main() { int continuar, chimichanga; continuar = 0; while (continuar == 0) { printf("\nMenu: \n 1.-Paque-te pongas feliz. \n 2.-Paque-te llenes. \n 3.-Paque-te enojes"); printf("\nSelecciona tu paquete: "); scanf("%d",&chimichanga); int precio; int billetesA, sobra, billetesB, sobraB, billetesC, sobraC, billetesD, sobraD, monedaA, monedaB, sobraE, monedaC, sobraF, monedaD, sobraG; switch(chimichanga) { case 1: precio=100; printf("Elegiste el paquete %d, su precio es de %d este incluye: ",chimichanga, precio); printf("\n Chocolate caliente. \n 3 churros. \n 5 tacos."); break; case 2: precio=80; printf("Elegiste el paquete %d, su precio es de %d este incluye: ",chimichanga, precio); printf("\n Cafe \n Concha \n Torta"); break; case 3: precio=40; printf("Elegiste el paquete %d, su precio es de %d este incluye: ",chimichanga, precio); printf("\n Agua. \n Bolillo. \n Chayote."); break; default: printf("Escoge un paquete valido."); }; int pago, cambio; printf("\n indica con cuanto vas a pagar: "); scanf("%d", &pago); [u] if (pago>=precio) { cambio=pago-precio; printf("\n su cambio es de: %d", cambio); billetesA=cambio/200; printf("\n %d billetes de 200", billetesA); sobra=cambio%200; billetesB=sobra/100; printf("\n %d billetes de 100", billetesB); sobraB=cambio%100; billetesC=sobraB/50; printf("\n %d billetes de 50", billetesC); sobraC=cambio%50; billetesD=sobraC/20; printf("\n %d billetes de 20", billetesD); sobraD=cambio%20; monedaA=sobraD/10; printf("\n %d monedas de 10", monedaA); sobraE=cambio%10; monedaB=sobraE/5; printf("\n %d monedas de 5", monedaB); sobraF=cambio%5; monedaC=sobraF/2; printf("\n %d monedas de 2", monedaC); sobraG=cambio%1; monedaD=sobraG/1; printf("\n %d monedad de 1", monedaD); [/u] } else { printf("\n pague lo que se indica."); }; printf("\nQuieres escoger algun otro paquete? Presiona 0 si tu respuesta es si y 1 si es no: "); scanf("%d", &continuar); system("cls"); }; getch(); }
|
|
|
|
|
|
|