Make your own free website on Tripod.com
PROBLEMAS RESUELTOS DE LA PRACTICAS 
TOMADAS LA SEMANA PASADA

/* programa para mostrar la suma acumulada de 
los multiplos de M y N a partir del numero 100
hasta un numero dado por el programador */
#include<stdio.h>
main()
{
/* determinar el numero mayor */
	int m,n,final,i;
	int acum_m,acum_n;
	int total;
	acum_m =0;
	acum_n =0;
	printf("Ingrese los valores de M y N  separados por un espacio\n:");
	scanf("%d %d",&m,&n);
	printf("Ingrese el numero final \n:");
	scanf("%d",&final);
	for(i=100;i<=final;i++)
	{
		if(i%m==0) acum_m += i;
		if(i%n==0) acum_n += i;
	}
	total = acum_m + acum_n;
	printf("La respuesta es %d \n:",total);
	return 0;
}

/* ingresar 10 resultados 
de partidos entre 2 equipos  ** 1 y 2 **
el programa debera:
- publicar cual equipo gano mas veces
- publicar la cantidad de goles del eq que mas gano
- cuantas veces perdio el eq 2
*/
#include <stdio.h>
main()
{
	int goles1,goles2,uno,dos,acugol1,acugol2,perdio2,i;
	uno=0; dos=0; acugol1=0; acugol2=0; perdio2=0;
	printf("Ingreso de SCORES\n");
	printf("-----------------\n");
	for(i=1;i<=10;i++)
	 	{
		scanf("%d %d",&goles1,&goles2);
			acugol1 += goles1;
			acugol2 += goles2;
		if (goles1>goles2)
			{
			uno++;
			perdio2++;
			}
		if (goles2>goles1) dos++; 
		if (goles2==goles1)
			{
			acugol1 += goles1;
			acugol2 += goles2;		
			}
		}
if (uno>dos) {
	printf("EQ UNO gano mas veces \n");
	printf("Hizo %d goles \n",acugol1);
	}
if (dos>uno) {
	printf("EQ DOS gano mas veces \n");
	printf("Hizo %d goles \n",acugol2);
	}
if (dos==uno) printf("Igualaron en partidos\n");
printf("\n El EQ DOS perdio %d veces \n",perdio2);
return 0;
}

/* Determinar cual es la persona mayor de un grupo de 
5 personas, por cada persona se ingresa
	dd Dia
	mm mes
	aa año de nacimiento
suponga que todos los meses son de 30 dias y 
el año es de 360 dias
*/
#include<stdio.h>
main()
{
	int dd,mm,aa;
	int hdd,hmm,haa;
	int i,mayor;
	float maxedad;
	float t1,t2,edad;
	maxedad = 0;
	printf("Ingrese la fecha de hoy [dd mm aaaa]\n:");
	scanf("%d %d %d",&hdd,&hmm,&haa);
	// tiempo transcurrido hasta hoy
		t1= (haa-1)*360 +(hmm-1)*30 + hdd;
	printf("Ahora ingresar EDADES:\n");
	printf("----------------------\n");
	for(i=1;i<=5;i++)
	{
		printf(" %d.- Ingrese [dd mm aaaa]\n:",i);
		scanf("%d %d %d",&dd,&mm,&aa);
		//tiempo transcurrido hasta la fecha de nacimiento
			t2= (aa-1)*360 +(mm-1)*30 + dd;
		// edad
			edad=(t1-t2)/360.0;
		if (edad > maxedad)
			{
			maxedad = edad;
			mayor=i;
			}
	}
	printf("la persona ingresada en la posicion %d es la mayor\n",mayor);
	printf("Su edad es: %f \n",maxedad);
	return 0;
}

/* Uso de Getche() para determinar
   cuantas veces se repite una vocal 
   se termina el ingreso cuando se presiona x
*/
#include <stdio.h>
#include <conio.h>
main()
{
int parar,a,e,i,o,u;
char ch;
parar = 0;
a = 0;
e = 0;
i = 0;
o = 0;
u = 0;
printf("Ingresar caracteres hasta presionar x : \n");
while(parar == 0) {
ch = getche();
if (ch == 'a') a++;
if (ch == 'e') e++;
if (ch == 'i') i++;
if (ch == 'o') o++;
if (ch == 'u') u++;
if (ch == 'x') parar=1;
}
printf("\n Conteo de vocales \n");
printf("\n la vocal a se repitio %d veces \n",a);
printf("\n la vocal e se repitio %d veces \n",e);
printf("\n la vocal i se repitio %d veces \n",i);
printf("\n la vocal o se repitio %d veces \n",o);
printf("\n la vocal u se repitio %d veces \n",u);
return 0;
}

/* Uso de Getche() para tamaño de tres palabras 
   se termina el ingreso cuando se presiona ENTER
*/
/* PROGRAMA PARA DETERMINAR EL TAMAÑO DE TRES PALABRAS
Tenga en cuenta que cada palabra se separa por un espacion en blanco
*/

#include <stdio.h>
#include <conio.h>
main()
{
int parar,palabra,c;
char ch;
parar = 0;
palabra = 1;
c = 0;
printf("Ingresar caracteres hasta presionar ENTER : \n");
while(parar == 0 && palabra <=3) {
	ch = getche();
	if (ch == 13) parar=1;
	else
	  if(ch!=' ')  		// ch no es espacio en blanco
	       c++;
	  else
		{
		palabra++;
		printf("Tamaño de palabra %d \n",c);
		c=0;
		}
	}
if(ch == 13) printf("Tamaño de palabra %d \n",c);
return 0;
}


/* Uso de Getche() para determinar
   cuantas veces se repite una vocal 
   se termina el ingreso cuando se presiona x
*/
/* factorial para pares menores o iguales a 10 */
#include <stdio.h>
main()
{
float factorial;
int i,f;
printf("Ingresar un numero: \n");
scanf("%d",&f);
factorial = 1;
if ((f%2==0) && (f<11)) {
	for(i=1;i<=f;i++) factorial = factorial * i;		
	printf("\n El factorial de %d es %f \n",f,factorial);
	}
return 0;
}

/* Uso de Getche() generalizado 
   se termina el ingreso cuando se presiona "." punto
*/
#include <stdio.h>
#include <conio.h>
main()
{
int parar,palabra,v,c;
char ch;
parar = 0;
palabra = 0;
v = 0; c = 0;
printf("Ingresar caracteres hasta presionar PUNTO : \n");
while(parar == 0) {
	ch = getche();
	if (ch == '.') parar=1;
	else
	  if(ch!=' ') {
		palabra++;
		switch(ch){
			case 'a':
			case 'e':
			case 'i':
			case 'o':
			case 'u': 
				v++;
				break;
			default:
				c++;
				break;
			}
		}
	  else
		{
		printf("Tamaño de palabra %d \n",palabra);
		palabra = 0;
		}
	}
printf("Tamaño de palabra %d \n",palabra);
printf("consonantes %d \n",c);
return 0;
}

PARA LOS ALUMNOS QUE AUN NO CAPTAN 
PROBLEMAS DE ESTRUCTURAS REPETITIVAS

Veamos los siguientes casos sencillos
Haga un seguimiento de las variables paso a paso


/* 
Como acumular en una estructura repetitiva
NOTAR COMO LOS VALORES INGRESADOS EN "a" SE VAN ACUMULANDO EN S
- Las vueltas son 5
*/
#include<stdio.h>
main()
{
int i,a,s;
s=0;    // ojo debe inicializar la variable s en 0 para poder acumular
for(i=0;i<5;i++)
	{
	printf("%d\n",i);
	scanf("%d",&a);
	s = s + a;   //acumular
	}
printf("%d\n",s); //mostrar el acumulado al final
return 0;
}

// LO MISMO DEL ANTERIOR PERO USANDO WHILE
// ESTA VEZ LOS ACUMULADOS SE HACEN INGRESANDO VALORES EN i
// PERO TENGA EN CUENTA QUE EL BUCLE DARA VUELTAS HASTA QUE 
// SE ingrese en i un valor de cero
- Las vueltas son indeterminadas
#include<stdio.h>
main()
{
int i,s;
s=0;
i=1;
while(i!=0) // mientras i distinto de 0
	{
	scanf("%d",&i);
	s = s + i;   //acumular
	}
printf("%d\n",s); //mostrar el acumulado al final
return 0;
}

// aqui solo se acumulan los pares
// para determinar si i es múltiplo de 2
// note que el residuo de dividir por dos osea "i%2" debe ser 0 (cero)
#include<stdio.h>
main()
{
int i,s;
s=0;
i=1;
while(i!=0) // mientras i distinto de 0
	{
	scanf("%d",&i);
	if(i%2 == 0) s=s+i;   //acumular solo los pares
	}
printf("%d\n",s); //mostrar el acumulado al final
return 0;
}

// acumula solo los impares
// note como se usa laestructura "do while" (POST-TEST)
// eso significa que EL BUCLE SE EJECUTA UNA VEZ POR LO MENOS
// MIENTRAS QUE EN "WHILE" O "FOR" es posible que el bucle
// no se ejecute ni una sola vez

#include<stdio.h>
main()
{
int i,s;
s=0;
i=1230;
do
	{
	scanf("%d",&i);
	if(i%2 != 0) s=s+i;   //acumular solo los impares
	} while(i!=0);
printf("%d\n",s); //mostrar el acumulado al final
return 0;
}