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