menu

miércoles, diciembre 28, 2016

Ejercicios 9 en C

1. Implementa un programa que cuente el número de sus entradas que son positivos , negativos y cero.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int main()
{
    float a;
    int e,s,n,c,p,coma;
    char numero[50];
    printf("Contador de números de 0, negativos, positivos.\nIntroduce un número para hacer la serie:\n ");
    do
    {
        n=0, c=0, p=0;
        do
        {
            do
            {
                printf("\nIntroduce un número: ");
                fgets(numero,50,stdin);
                numero[strlen(numero)-1]= 0;
                e=0, s=0, coma=0;
                coma=0;
                while (e < strlen(numero) && s==0)
                {
                    if (e == 0 && numero[e] == '-' && strlen(numero) >=2)//verificar el numero negativo
                    {
                        e++;
                    }
                    else if (numero[e] == '.' && strlen(numero) >=3 && e!= 0 && e!= strlen(numero)-1 && coma == 0)//verificar la coma
                    {
                        e++;
                        coma++;
                    }
                    else if(isdigit(numero[e])!=0)
                    {
                        e++;
                    }
                    else
                    {
                        s=1;
                    }
                }
            }
            while (s != 0);
            a=atof(numero);
            if (a<0)
            {
                n++;
            }
            else if (a==0)
            {
                c++;
            }
            else if (a>0)
            {
                p++;
            }
            do
            {
                printf("\nQuiere introducir otro número, s o n: ");
                fgets(numero,50,stdin);
                numero[strlen(numero)-1]= 0;
            }
            while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
        }
        while(strcmp(numero,"n") != 0);
        printf("\nTotal de positivos: %d\nTotal de negativos: %d\nTotal de números 0: %d",p,n,c);
        do
        {
            printf("\nQuiere seguir identificando números, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }
    while(strcmp(numero,"n") != 0);
}


2. Implementa un programa que lea valores de teclado y a continuación visualice el mayor y el menor de esos valores en pantalla.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int validar_num(char numero[50]);

int main()
{
    float a,mayor, menor;
    int e,s,coma,contador;
    char numero[50];
    printf("Valor mayor y menor\n ");
    do
    {
        contador=0;
        do
        {
            do
            {
                printf("\nIntroduce un número: ");
                fgets(numero,50,stdin);
                numero[strlen(numero)-1]= 0;
                s=validar_num(numero);
            }
            while (s != 0);
            contador++;
            a=atof(numero);
            if (contador==1)
            {
                mayor=a, menor=a;
            }
            else if (mayor
            {
                mayor=a;
            }
            else if (menor>a)
            {
                menor=a;
            }
            do
            {
                printf("\nQuiere introducir otro número, s o n: ");
                fgets(numero,50,stdin);
                numero[strlen(numero)-1]= 0;
            }
            while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
        }
        while(strcmp(numero,"n") != 0);
        printf("\nNúmero mayor: %g\nNúmero menor: %g",mayor,menor);
        do
        {
            printf("\nQuiere seguir averiguando el número mayor y menor, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }
    while(strcmp(numero,"n") != 0);
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i
    {
        if (i == 0 && numero[i] == '-' && strlen(numero) >=2)//verificar el numero negativo
        {
            i++;
        }
        else if (numero[i] == '.' && strlen(numero) >=3 && i!= 0 && i!= strlen(numero)-1 && coma == 0)//verificar la coma
        {
            i++;
            coma++;
        }
        else if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


3. Implementa un programa que solicite al usuario un dato de tipo fecha y a continuación visualice el número del día correspondiente del año.
Ejemplo , si la fecha es 30 12 1999 , el numero visualizado es 364.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int validar_num(char numero[50]);
int texto(char contenido[50]);

main()
{
    int fecha[3],v=0,b, total;
    char numero[50],contenido[50];
    printf("Averiguar dia del año\n");
    do
    {
        fecha[2]=texto(strcpy(contenido,"año"));
        if (fecha[2] %4==0)
        {
            b=1;
        }
        else
        {
            b=0;
        }
        do
        {
            fecha[1]=texto(strcpy(contenido,"mes"));
            if (fecha[1]>0 && fecha[1]<=12)
            {
                v=0;
            }
            else
            {
                v=1;
            }
        }
        while(v!=0);
        do
        {
            fecha[0]=texto(strcpy(contenido,"dia"));
            if (fecha[0]>0 && fecha[0]<=29 && fecha[1]==2 && b == 1 )
            {
                v=0;
            }
            else if (fecha[0]>0 && fecha[0]<=28 && fecha[1]==2)
            {
                v=0;
            }
            else if (fecha[0]>0 && fecha[0]<=31 && (fecha[1]==1 || fecha[1]==3 || fecha[1]==5 || fecha[1]==7 || fecha[1]==8 || fecha[1]==10 || fecha[1]==12 ))
            {
                v=0;
            }
            else if (fecha[0]>0 && fecha[0]<=30 && (fecha[1]==4 || fecha[1]==6 || fecha[1]==9 || fecha[1]==11))
            {
                v=0;
            }
            else
            {
                v=1;
            }
        }
        while(v!=0);
        if (fecha[1]==1)
        {
            total=fecha[0];
        }
        else if (fecha[1]==2)
        {
            total=fecha[0]+31;
        }
        else if (fecha[1]==3)
        {
            total=fecha[0]+59+b;
        }
        else if (fecha[1]==4)
        {
            total=fecha[0]+90+b;
        }
        else if (fecha[1]==5)
        {
            total=fecha[0]+120+b;
        }
        else if (fecha[1]==6)
        {
            total=fecha[0]+151+b;
        }
        else if (fecha[1]==7)
        {
            total=fecha[0]+181+b;
        }
        else if (fecha[1]==8)
        {
            total=fecha[0]+212+b;
        }
        else if (fecha[1]==9)
        {
            total=fecha[0]+243+b;
        }
        else if (fecha[1]==10)
        {
            total=fecha[0]+273+b;
        }
        else if (fecha[1]==11)
        {
            total=fecha[0]+304+b;
        }
        else
        {
            total=fecha[0]+334+b;
        }
        printf("El dia del año es: %d",total);
        do
        {
            printf("\nQuiere introducir otra fecha, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }
    while(strcmp(numero,"n") != 0);
}

int texto(char contenido[50])
{
    int s,a;
    char numero[50];
    do
    {
        printf("Introduce %s: ", contenido);
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
    }
    while (s != 0);
    a=atof(numero);
    return a;
}

int validar_num(char numero[50])
{
    int i=0,v=0;
    while (i<strlen(numero)&&v==0)
    {
       if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


4. Escribir un programa que lea tres enteros positivos , dia , mes , año y a continuación visualice la fecha que represente, el número de días, del mes y una frase que diga si es o no bisiesto.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int validar_num(char numero[50]);
int texto(char contenido[50]);

main()
{
    int fecha[3],v=0,b;
    char numero[50],contenido[50], bisiesto[50];
    printf("Averiguar año bisiesto\n");
    do
    {
        fecha[2]=texto(strcpy(contenido,"año"));
        if (fecha[2] %4==0)
        {
            b=1;
        }
        else
        {
            b=0;
        }
        do
        {
            fecha[1]=texto(strcpy(contenido,"mes"));
            if (fecha[1]>0 && fecha[1]<=12)
            {
                v=0;
            }
            else
            {
                v=1;
            }
        }
        while(v!=0);
        do
        {
            fecha[0]=texto(strcpy(contenido,"dia"));
            if (fecha[0]>0 && fecha[0]<=29 && fecha[1]==2 && b == 1 )
            {
                v=0;
            }
            else if (fecha[0]>0 && fecha[0]<=28 && fecha[1]==2)
            {
                v=0;
            }
            else if (fecha[0]>0 && fecha[0]<=31 && (fecha[1]==1 || fecha[1]==3 || fecha[1]==5 || fecha[1]==7 || fecha[1]==8 || fecha[1]==10 || fecha[1]==12 ))
            {
                v=0;
            }
            else if (fecha[0]>0 && fecha[0]<=30 && (fecha[1]==4 || fecha[1]==6 || fecha[1]==9 || fecha[1]==11))
            {
                v=0;
            }
            else
            {
                v=1;
            }
        }
        while(v!=0);
        if(b==1)
        {
            strcpy(bisiesto,"Es un año bisiesto");
        }
        else
        {
            strcpy(bisiesto,"Es un año no bisiesto");
        }
        printf("La fecha es: %d/%d/%d. %s",fecha[0],fecha[1],fecha[2],bisiesto);
        do
        {
            printf("\nQuiere introducir otra fecha, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }
    while(strcmp(numero,"n") != 0);
}

int texto(char contenido[50])
{
    int s,a;
    char numero[50];
    do
    {
        printf("Introduce %s: ", contenido);
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
    }
    while (s != 0);
    a=atof(numero);
    return a;
}

int validar_num(char numero[50])
{
    int i=0,v=0;
    while (i<strlen(numero)&&v==0)
    {
       if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


5. En una empresa de computadoras , los salarios de los empleados se van a aumentar según su contrato actual:
Contrato aumento%
0 a 9000 dolares…….20
9001 a 15000dolares..10
15001a 20000dolares..5
Mas de 20000dolares..0

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int validar_num(char numero[50]);

main()
{
    char numero[50];
    int v;
    float n;
    printf("Calculo de subida de salarios\n");
    do{
        do{
            printf("Introduce salario: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
            v=validar_num(numero);
            if(strcmp(numero,"0")==0){v=1;}
        }while(v!=0);
        n=atof(numero);
        if(n>0 && n<9001){printf("Sueldo %g; descuento 20%; total: %g",n,n+((n*20)/100));}
        else if(n>9000 && n<15001){printf("Sueldo %g; descuento 10%; total: %g",n,n+((n*10)/100));}
        else if(n>15000 && n<20001){printf("Sueldo %g; descuento 5%; total: %g",n,n+((n*5)/100));}
        else{printf("Sueldo %g;descuento 0%; total: %g",n,n);}
        do{
            printf("\nQuiere introducir otro salario, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }while(strcmp(numero,"n") != 0);
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0){
        if (numero[i] == '.' && strlen(numero) >=3 && i!= 0 && i!= strlen(numero)-1 && coma == 0)//verificar la coma
        {i++;coma++;}
        else if(isdigit(numero[i])!=0){i++;}
        else{v=1;}
    }return v;
}


6. La constante pi ( 3.14141592) es muy utilizada en matemáticas. Un método sencillo de calcular su valor es:
Pi= 4*(2/3)*(4/5)*(6/5)*(6/7)….. Escribir un programa que efectúe este cálculo con un número de términos especificados por el usuario.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int validar_num(char numero[50]);

int main()
{

    float a,suma;
    int s,i,b,c,d;
    char numero[50];
    printf("Calculo de constante PI con otros números.\n ");
    do
    {
        do
        {
            printf("\nIntroduce un número: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
            s=validar_num(numero);
        }
        while (s != 0);
        a=atof(numero);
        suma=3; b=2; c=3; d=4;
        for(i=0;i<=a;i++)
        {
             if (i%2==0)
        {
            suma=suma+(4.0/((b+i)*(c+i)*(d+i)));
        }
        else {suma=suma-(4.0/((b+i)*(c+i)*(d+i)));}
        b++; c++;d++;
        }
        printf("Numero PI: %f",suma);
        do
        {
            printf("\nQuiere introducir otro número, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }
    while(strcmp(numero,"n") != 0);
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if (i == 0 && numero[i] == '-' && strlen(numero) >=2)//verificar el numero negativo
        {
            i++;
        }
        else if (numero[i] == '.' && strlen(numero) >=3 && i!= 0 && i!= strlen(numero)-1 && coma == 0)//verificar la coma
        {
            i++;
            coma++;
        }
        else if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


7. Calcular la media de las notas introducidas por teclado con un dialogo así.

¿Cuántas notas?
20
Nota1:2
Nota2:5
Media de estas es:…

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int validar_num(char numero[50]);
float pedir_numero(char comentario[50]);
char* convert_string(int integer);
char ascii[50]={0};

int main()
{

    float  num,suma,nota;
    int i;
    char comentario[50];
    printf("Calcular media de notas.\n ");
    do
    {
        num= pedir_numero(strcpy( comentario, "\nCuantas notas quieras calcular: "));
        if (num==0){printf("La media es: 0");}
        else
        {
            suma=0;
            for(i=1;i<=num;i++)
            {
                char *texto=convert_string(i);//funcion para convertir un int en char
                nota=pedir_numero(strcat(texto,"ª nota :"));
                suma=suma+nota;
                memset(texto,'\0',150);//resetea la cadena de caracteres
            }
            printf("media es de : %g",suma/num);
        }
        do
        {
            printf("\nQuieres calcular la media de más notas, s o n: ");
            fgets(comentario,50,stdin);
            comentario[strlen(comentario)-1]= 0;
        }
        while (strcmp(comentario,"s") != 0 && strcmp(comentario,"n") != 0);
    }
    while(strcmp(comentario,"n") != 0);
}

float pedir_numero(char comentario[50])
{
    int v;
    float convertido;
    char numero[50];
    do
    {
        printf("%s",comentario);
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        v=validar_num(numero);
    }
    while(v!=0);
    convertido= atof(numero);//atof stdlib.h con decimales atoi sin decimales
    return convertido;
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i
    {
        if (i == 0 && numero[i] == '-' && strlen(numero) >=2)//verificar el numero negativo
        {
            i++;
        }
        else if (numero[i] == '.' && strlen(numero) >=3 && i!= 0 && i!= strlen(numero)-1 && coma == 0)//verificar la coma
        {
            i++;
            coma++;
        }
        else if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}

char* convert_string(int integer)
{
    int temp,count=0,i,cnd=0;
    if(integer>>31) /*CONVERTING 2's complement value to normal value*/
    {
        integer=~integer+1;
        for(temp=integer;temp!=0;temp/=10,count++);
        ascii[0]=0x2D;
        count++;
        cnd=1;
     }
     else
        for(temp=integer;temp!=0;temp/=10,count++);
        for(i=count-1,temp=integer;i>=cnd;i--)
        {
            ascii[i]=(temp%10)+0x30;
            temp/=10;
        }
    return ascii;
 }


 8. Contar el número de eneros negativos inroducidos en una línea.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int main()
{

    float a;
    int e,s,n;
    char numero[50];
    printf("Contador de números negativos.\nIntroduce un número para hacer la serie:\n ");
    do
    {
        n=0;
        do
        {
            do
            {
                printf("\nIntroduce un número: ");
                fgets(numero,50,stdin);
                numero[strlen(numero)-1]= 0;
                e=0, s=0;
                while (e < strlen(numero) && s==0)
                {
                    if (e == 0 && numero[e] == '-' && strlen(numero) >=2)//verificar el numero negativo
                    {
                        e++;
                    }
                    else if(isdigit(numero[e])!=0)
                    {
                        e++;
                    }
                    else
                    {
                        s=1;
                    }
                }
            }
            while (s != 0);
            a=atof(numero);
            if (a<0)
            {
                n++;
            }

            do
            {
                printf("\nQuiere introducir otro número, s o n: ");
                fgets(numero,50,stdin);
                numero[strlen(numero)-1]= 0;
            }
            while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
        }
        while(strcmp(numero,"n") != 0);
        printf("\nTotal de negativos: %d",n);
        do
        {
            printf("\nQuiere seguir identificando números, s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);
    }
    while(strcmp(numero,"n") != 0);


}

No hay comentarios:

Publicar un comentario