Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - AxelP

#1
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  :P

#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();
}
#2
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.
#3
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!");
}
}
#4
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();
}