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;
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;
}
{
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