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ú

Mensajes - Nikola__Tesla

#1
Olvide decir que aumente a 10 y seguía dando error
#2
Lo que me sorprende del bug de mi código es que he descubierto que si en la funcion factor cambio
char amarillo[]="amarillo";
por
char amarillo[]="amarill";
por ejemplo, el programa funciona perfectamente, como si funcionara con todo excepto con la palabra "amarillo" :o. Por tanto, me gustaría saber el por qué de esto o, si no, un sinónimo de amarillo para poner ;D
#3
Hola a todos estoy empezando con C y he hecho un programa para calcular el valor de las resistencias eléctricas mediante el código de colores. El problema es que al poner como color del factor multiplicador (el tercer color) como amarillo, me da el mensaje de error el SEGUNDO, y cambiando el segundo color me sigue dando el mismo error, hasta que cambio el factor multiplicador a otro color que no sea el amarillo y todo perfecto. Si desactivo el mecanismo de error me sale 1000000 ohmios cuando meto "verde-azul-amarillo-oro", que debería dar 560000 ohmios, que el programa transforma posteriormente, 560K.  He estado buscando errores por todos lados y es que no me explico que puede ser. A ver si me podeis echar una mano.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void ayuda(void)
{
    system("cls");
    printf("Bienvenido al manual de ayuda de Ohmium v3.0!");
    printf("\n\nPara empezar a usar el programa, entre en la primera\n");
    printf("opcion, y valla introduciendo los colores uno a uno\n");
    printf("en minusculas y sin acentos, tal y como se muestra en la\n");
    printf("siguiente lista:\n");
    printf("\n negro\n marron\n rojo\n naranja\n amarillo\n verde\n azul\n");
    printf(" violeta\n gris\n blanco\n oro\n plata\n nada\n\n");
    printf("PULSE CUALQUIER TECLA PARA REINICIAR EL PROGRAMA");
    system("pause>nul");
    system("cls");
}
int valor1(char col1[8])
{
    int val;
    char negro[]="negro";
    char marron[]="marron";
    char rojo[]="rojo";
    char naranja[]="naranja";
    char amarillo[]="amarillo";
    char verde[]="verde";
    char azul[]="azul";
    char violeta[]="violeta";
    char gris[]="gris";
    char blanco[]="blanco";
    int com0,com1,com2,com3,com4,com5,com6,com7,com8,com9;
    com0=strcmp(negro,col1);
    com1=strcmp(marron,col1);
    com2=strcmp(rojo,col1);
    com3=strcmp(naranja,col1);
    com4=strcmp(amarillo,col1);
    com5=strcmp(verde,col1);
    com6=strcmp(azul,col1);
    com7=strcmp(violeta,col1);
    com8=strcmp(gris,col1);
    com9=strcmp(blanco,col1);
    if (com0==0) val=0;
    else if (com1==0) val=10;
    else if (com2==0) val=20;
    else if (com3==0) val=30;
    else if (com4==0) val=40;
    else if (com5==0) val=50;
    else if (com6==0) val=60;
    else if (com7==0) val=70;
    else if (com8==0) val=80;
    else if (com9==0) val=90;
    else error(1);
    return val;
}
int valor2(char col2[8])
{
    int num;
    char negro[]="negro";
    char marron[]="marron";
    char rojo[]="rojo";
    char naranja[]="naranja";
    char amarillo[]="amarillo";
    char verde[]="verde";
    char azul[]="azul";
    char violeta[]="violeta";
    char gris[]="gris";
    char blanco[]="blanco";
    int com0,com1,com2,com3,com4,com5,com6,com7,com8,com9;
    com0=strcmp(negro,col2);
    com1=strcmp(marron,col2);
    com2=strcmp(rojo,col2);
    com3=strcmp(naranja,col2);
    com4=strcmp(amarillo,col2);
    com5=strcmp(verde,col2);
    com6=strcmp(azul,col2);
    com7=strcmp(violeta,col2);
    com8=strcmp(gris,col2);
    com9=strcmp(blanco,col2);
    if (com0==0) num=0;
    else if (com1==0) num=1;
    else if (com2==0) num=2;
    else if (com3==0) num=3;
    else if (com4==0) num=4;
    else if (com5==0) num=5;
    else if (com6==0) num=6;
    else if (com7==0) num=7;
    else if (com8==0) num=8;
    else if (com9==0) num=9;
    else error(2);
    return num;
}
float factor(char fac[8])
{
    float num;
    char negro[]="negro";
    char marron[]="marron";
    char rojo[]="rojo";
    char naranja[]="naranja";
    char amarillo[]="amarillo";
    char verde[]="verde";
    char azul[]="azul";
    char plata[]="plata";
    char oro[]="oro";
    int com0,com1,com2,com3,com4,com5,com6,com7,com8;
    com0=strcmp(negro,fac);
    com1=strcmp(marron,fac);
    com2=strcmp(rojo,fac);
    com3=strcmp(naranja,fac);
    com4=strcmp(amarillo,fac);
    com5=strcmp(verde,fac);
    com6=strcmp(azul,fac);
    com7=strcmp(oro,fac);
    com8=strcmp(plata,fac);
    if (com0==0) num=1;
    else if (com1==0) num=10;
    else if (com2==0) num=100;
    else if (com3==0) num=1000;
    else if (com4==0) num=10000;
    else if (com5==0) num=100000;
    else if (com6==0) num=1000000;
    else if (com7==0) num=0.1;
    else if (com8==0) num=0.01;
    else error(3);
    return num;
}
int tolerancia(char num2[8])
{
    int tol;
    char marron[]="marron";
    char rojo[]="rojo";
    char plata[]="plata";
    char oro[]="oro";
    char nada[]="nada";
    int com0,com1,com2,com3,com4;
    com0=strcmp(marron,num2);
    com1=strcmp(rojo,num2);
    com2=strcmp(oro,num2);
    com3=strcmp(plata,num2);
    com4=strcmp(nada,num2);
    if (com0==0) tol=1;
    else if (com1==0) tol=2;
    else if (com2==0) tol=5;
    else if (com3==0) tol=10;
    else if (com4==0) tol=20;
    else error(4);
    return tol;
}
void error(int tipo)
{
    if (tipo==1 || tipo==2) //primeras dos cifras
    {
        system("cls");
        printf("\nHa habido un error al introducir el %d color \n",tipo);
        printf("Asegurese de que ha introducido uno de los siguientes colores:");
        printf("\n negro\n marron\n rojo\n naranja\n amarillo\n verde\n azul\n");
        printf(" violeta\n gris\n blanco\n");
        printf("Pulse cualquier tecla para reiniciar el programa");
        system("pause>nul");
        system("cls");
        cadena();
    }
    else if (tipo==3) //tercera cifra
    {
        system("cls");
        printf("\nHa habido un error al introducir el tercer color\n",tipo);
        printf("Asegurese de que ha introducido uno de los siguientes colores:");
        printf("\n negro\n marron\n rojo\n naranja\n amarillo\n verde\n azul\n");
        printf(" oro\n plata\n");
        printf("Pulse cualquier tecla para reiniciar el programa");
        system("pause>nul");
        system("cls");
        cadena();
    }
    else if (tipo==4) //cuarta cifra
    {
        system("cls");
        printf("\nHa habido un error al introducir el cuarto color\n",tipo);
        printf("Asegurese de que ha introducido uno de los siguientes numeros:");
        printf("\n negro\n marron\n oro\n plata\n nada\n");
        printf("Pulse cualquier tecla para reiniciar el programa");
        system("pause>nul");
        system("cls");
        cadena();
    }
    else if (tipo==5)
    {
        system("color 04");
        printf("ERROR GENERALIZADO, PULSE CUALQUIER TECLA PARA SALIR");
        system("pause>nul");
        system("exit");
    }
}
void cadena(void)
{
    int opcion;
    opcion=1;
    while (opcion==1)
    {
        printf("BIENVENIDO A OHMIUM v3.0!\n");
        printf("Pulse 1 para empezar\n");
        printf("Pulse 2 para ver el manual de ayuda\n");
        //seleccion de comienzo u ayuda
        printf("(1/2): ");
        int po;
        fflush(stdin);
        scanf("%d",&po);
        if (po==1)
        {
            //Recogida de datos
            system("cls");
            printf("Introduzca el primer color: ");
            char prim[8];
            fflush(stdin);
            gets(prim);
            system("cls");
            printf("Introduzca el segundo color: ");
            char segu[8];
            fflush(stdin);
            gets(segu);
            system("cls");
            printf("Introduzca el tercer color: ");
            char terce[8];
            fflush(stdin);
            gets(terce);
            system("cls");
            printf("Introduzca el cuarto color: ");
            char cuar[8];
            fflush(stdin);
            gets(cuar);
            //Comienzo del calculo
            int val1,val2,val4;
            val1=valor1(prim);
            val2=valor2(segu);
            float val3;
            val3=factor(terce);
            val4=tolerancia(cuar);
            int res1;
            res1=val1+val2;
            float res2;
            res2=res1*val3;
            //clasificacion del resultado
            system("cls");
            float resf2;
            if (res2<=990)
            {
                resf2=res2;
                system("color 02");
                printf("La resistencia tiene un valor de %g ohmios ñ %d\n",resf2,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if ((res2==1000) || (res2==2000) || (res2==3000) || (res2==4000) || (res2==5000) || (res2==6000) || (res2==7000) || (res2==8000) || (res2==9000))
            {
                float num;
                num=res2/1000;
                char resf1[2];
                sprintf(resf1,"%gK",num);
                resf1[2]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if ((res2>=1100 && res2<=1900) || (res2>=2100 && res2<=2900) || (res2>=3100 && res2<=3900) || (res2>=4100 && res2<=4900) || (res2>=5100 && res2<=5900) || (res2>=6100 && res2<=6900) || (res2>=7100 && res2<=7900) || (res2>=8100 && res2<=8900) || (res2>=9100 && res2<=9900))
            {
                char num1[3];
                sprintf(num1,"%g",res2);
                char resf1[3];
                sprintf(resf1,"%cK%c",num1[0],num1[1]);
                resf1[3]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if (res2>=10000 && res2<=99000)
            {
                float num;
                num=res2/1000;
                char resf1[3];
                sprintf(resf1,"%gK",num);
                resf1[3]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if (res2>=100000 && res2<=990000)
            {
                float num;
                num=res2/1000;
                char resf1[4];
                sprintf(resf1,"%gK",num);
                resf1[4]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if ((res2==1000000) || (res2==2000000) || (res2==3000000) || (res2==4000000) || (res2==5000000) || (res2==6000000) || (res2==7000000) || (res2==8000000) || (res2==9000000))
            {
                float num;
                num=res2/1000000;
                char resf1[2];
                sprintf(resf1,"%gM",num);
                resf1[2]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if ((res2>=1100000 && res2<=1900000) || (res2>=2100000 && res2<=2900000) || (res2>=3100000 && res2<=3900000) || (res2>=4100000 && res2<=4900000) || (res2>=5100000 && res2<=5900000) || (res2>=6100000 && res2<=6900000) || (res2>=7100000 && res2<=7900000) || (res2>=8100000 && res2<=8900000) || (res2>=9100000 && res2<=9900000))
            {
                char num1[10];
                sprintf(num1,"%f",res2);
                char resf1[3];
                sprintf(resf1,"%cM%c",num1[0],num1[1]);
                resf1[3]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if (res2>=10000000 && res2<=99000000)
            {
                float num;
                num=res2/1000000;
                char resf1[3];
                sprintf(resf1,"%gM",num);
                resf1[3]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            else if (res2>=100000000 && res2<=990000000)
            {
                float num;
                num=res2/1000000;
                char resf1[4];
                sprintf(resf1,"%gM",num);
                resf1[4]='\0';
                system("color 02");
                printf("La resistencia tiene un valor de %s ñ %d\n",resf1,val4);
                printf("PULSE CUALQUIER TECLA PARA CONTINUAR");
                system("pause>nul");
                system("color 07");
            }
            system("cls");
            printf("Pulse 1 para volver calcular otra resistencia\n");
            printf("Pulse 2 para salir\n");
            printf("(1/2): ");
            fflush(stdin);
            scanf("%d",&opcion);
            system("color 07");
            system("cls");
        }
        else ayuda();
    }
    system("exit");
}

int main(void)
{
    system("title Ohmium v3.0");
    cadena();
    return 0;
}