| Ejemplos de C - Contadores, acumuladores e indicadores |
1.- Programa que informa sobre un conjunto de números tecleados:
#include<stdio.h>
#include<string.h>
void main()
{
unsigned int nro,c_nro,acu_nro,media,max,min;
char liter[9];
c_nro=0;
acu_nro=0;
do
{
printf("\n\nEscriba un número entre 1 y 99: ");
scanf("%u",&nro);
if (nro>=1 && nro<=99)
{
c_nro++;
if (nro<50)
strcpy(liter,"menor de");
else if (nro>50)
strcpy(liter,"mayor que");
else
strcpy(liter,"igual a");
printf("\nEl número %u es %s 50.",nro,liter);
if (c_nro==1)
{
max=nro;
min=nro;
}
else
if (nro>max)
max=nro;
else if (nro<min)
min=nro;
acu_nro+=nro;
}
}
while (nro>=1 && nro<=99);
media=acu_nro/c_nro;
printf("\nLa media es %u.",media);
printf("\nEl número mayor es %u.",max);
printf("\nLa número menor es %u.",min);
}
2.- Programa que pide información acerca de los alumnos de una clase:
#include<stdio.h>
#include<string.h>
void main()
{
int n_alu,n_aluh,n_alum,alt,acu_alth,acu_altm,mediah,mediam,media,max,min;
char nom[15],sexo,liter[15];
n_alu=0;
acu_alth=0;
acu_altm=0;
n_aluh=0;
n_alum=0;
while (n_alu<=3)
{
n_alu++;
printf("Teclea nombre del alumno\n");
scanf("%s",&nom);
printf("Teclea altura\n");
scanf("%d",&alt);
printf("Teclea sexo\n");
fflush(stdin);
scanf("%c",&sexo);
switch (sexo)
{
case 'H':
case 'h': strcpy(liter,"es un hombre") ;
acu_alth=acu_alth+alt;
n_aluh++;
break;
case 'M':
case 'm': strcpy(liter,"es una mujer\n");
acu_altm=acu_altm+alt;
n_alum++;
break;
default: printf("Sexo erroneo.Teclea h ó m\n");
break;
}
if (n_alu==1)
{min=alt;
max=alt;}
else if (alt>max)
max=alt;
else if (alt<max)
min=alt;
if (sexo=='m' || sexo=='M' || sexo=='h' || sexo=='H')
{printf("D.%s %s\n",nom,liter);}
}
if (n_aluh!=0)
{mediah=acu_alth/n_aluh;
printf("Altura media de los hombres %d\n",mediah);}
else printf("No se ha introducido ningún hombre\n");
if (n_alum!=0)
{mediam=acu_altm/n_alum;
printf("Altura media de las mujeres %d\n",mediam);}
else printf("No se ha introducido ninguna mujer\n");
media=(acu_alth+acu_altm)/(n_aluh+n_alum);
printf("Altura media de la clase %d\n",media);
printf("Altura mayor %d\n",max);
printf("Altura menor %d\n",min);
}
3.- Programa que toma datos de la población de ciudades e informa
de distintos datos:
#include<stdio.h>
void main()
{
long int n_hom,n_muj,n_ciud,acu_muj,acu_hom,max,min,p_hom,p_muj,n_tot,media_m,media_h;
char ciud[20],res;
n_ciud=0;
acu_hom=0;
acu_muj=0;
do
{
printf("Teclea ciudad\n");
scanf("%s",&ciud);
n_ciud++;
printf("Teclea número de hombres\n");
scanf("%ld",&n_hom);
acu_hom=acu_hom+n_hom;
printf("Teclea número de mujeres\n");
scanf("%ld",&n_muj);
acu_muj=acu_muj+n_muj;
n_tot=n_hom+n_muj;
p_hom=(n_hom*100)/(n_tot);
p_muj=(n_muj*100)/(n_tot);
printf("En %s el pocentaje de hombres es %ld y el porcentaje de mujeres
es %ld\n",ciud,p_hom,p_muj);
{if (n_ciud==1)
{max=n_hom+n_muj;
min=n_hom+n_muj;}
else if (n_hom+n_muj>max)
max=n_muj+n_hom;
else if (n_hom+n_muj<min)
min=n_muj+n_hom;}
printf("¿Desea dar datos de otra ciudad?\n");
fflush(stdin);
scanf("%c",&res);
}
while(res!='n');
media_m=acu_muj/n_ciud;
media_h=acu_hom/n_ciud;
printf("La media de mujeres por ciudad es %ld\n",media_m);
printf("La media de hombres por ciudad es %ld\n",media_h);
printf("Número máximo de habitantes por ciudad %ld\n",max);
printf("Número mínimo de habitantes por ciudad %ld",min);
}
4.- Programa que informa sobre el saldo de una cuenta bancaria:
#include<stdio.h>
#include<string.h>
void main()
{
long int saldo_c,sal_med,max,min,acu_saldo,c_nro_c,nro_c,descc,desca,descp,desco;
char tipo,liter[10],liter2[10],tit[20],res;
descc=0;desca=0;descp=0;desco=0;
acu_saldo=0;
c_nro_c=0;
do
{
printf("Teclea numero de cuenta\n");
scanf("%ld",&nro_c);
fflush(stdin);
printf("Teclea tipo de cuenta\n");
scanf("%c",&tipo);
printf("Teclea titular de la cuenta\n");
scanf("%s",&tit);
printf("Introduce el saldo de la cuenta\n");
scanf("%ld",&saldo_c);
acu_saldo=acu_saldo+saldo_c;
switch(tipo)
{
case 'c': strcpy(liter,"corriente");
if (saldo_c<0)
descc++;
break;
case 'a': strcpy(liter,"ahorro");
if (saldo_c<0)
desca++;
break;
case 'p': strcpy(liter,"plazo");
if (saldo_c<0)
descp++;
break;
default : strcpy(liter,"otras");
if (saldo_c<0)
desco++;
break;
}
{if (saldo_c<0)
{
strcpy(liter2,"negativo");}
else if (saldo_c>0)
strcpy(liter2,"positivo");
else strcpy(liter2,"cero");}
c_nro_c++;
{if (c_nro_c==1)
{min=saldo_c;max=saldo_c;}
else if (saldo_c<min)
min=saldo_c;
else if (saldo_c>max)
max=saldo_c;}
printf("D. %s tiene una cuenta %s con saldo %s\n",tit,liter,liter2);
printf("Desea dar datos de otra cuenta?\n");
fflush(stdin);
scanf("%c",&res);
}
while (res!='n');
printf("Cuentas de ahorro con descubierto %ld\n",desca);
printf("Cuentas corrientes con descubierto %ld\n",descc);
printf("Cuentas a plazos con descubierto %ld\n",descp);
printf("Cuentas resto con descubierto %ld\n",desco);
sal_med=acu_saldo/c_nro_c;
printf("Saldo medio: %ld\n",sal_med);
printf("Saldo maximo: %ld\n",max);
printf("Saldo minimo: %ld\n",min);
}