******************************************************** PROGRAMACION APLICADA A LA INGENIERIA CIVIL OOCC GUIA Nº2 Ayudante: Rodrigo Torres Aguirre/2009 Compilador utilizado:dev-c++ version 4.9.9.2 ******************************************************** 1-Dado como entrada dos números enteros, positivos y distintos: a y b, determine si el mayor es múltiplo del menor. Indicación: considere usar operadores para división entera (/ en C/C++) y para resto de división entera (% en C/C++). int a,b; printf("ingrese el Numero a:"); scanf("%d",&a); while(a<=0){ printf("numero ingresado es Incorrecto.\n"); printf("ingrese el Numero Nuevamente (mayor que cero): "); scanf("%d", &a); printf("\ningrese el Numero b:"); scanf("%d",&b); while(b<=0){ printf("numero ingresado es Incorrecto.\n"); printf("ingrese el Numero Nuevamente (mayor que cero): "); scanf("%d",&b); if(a%b==0){ printf("%d es multiplo de %d",a,b); else if(a%b==1){ printf("%d no es multiplo de %d",a,b); if(b%a==0){ printf("%d es multiplo de %d",b,a); else if(b%a==1){ printf("%d no es multiplo de %d",b,a); 2-Dado como entrada cuatro valores enteros: a, b, c, y d, genere como salida todas las relaciones de igualdad. Esto puede ser "todos son iguales", "son iguales a y b", "son iguales a, b y c", etc. int a,b,c,d; printf("ingrese el numero a:"); scanf("%d",&a); printf("ingrese el numero b:"); scanf("%d",&b); printf("ingrese el numero c:"); scanf("%d",&c); printf("ingrese el numero d:"); scanf("%d",&d); if(a==b){printf("\ta son iguales b\n"); else{printf("\ta son distintos b\n"); if(a==c){printf("\ta son iguales c\n"); else{printf("\ta son distintos b\n"); if(a==d){printf("\ta son iguales d\n");
else{printf("\ta son distintos d\n"); if(b==c){printf("\tb son iguales c\n"); else{printf("\tb son distintos c\n"); if(b==d){printf("\tb son iguales d\n"); else{printf("\tb son distintos d\n"); if(d==c){printf("\td son iguales c\n"); else{printf("\td son distintos c\n"); if(a==b && b==c){printf("\ta,b,c son iguales\n"); if(a==c && c==d){printf("\ta,c,d son iguales\n"); if(a==b && a==d){printf("\ta,b,d son iguales\n"); if(b==c && c==d){printf("\tb,c,d son iguales\n"); if(a==b && b==c && c==d){printf("\ttodos son iguales"); 3-Construya un algoritmo que reciba como entrada un cierto valor n, y genere como salida n veces la palabra "hola". int n,i; printf("ingrese el valor de n:"); printf("\t%d-hola\n",i); 4-Construya un algoritmo que reciba como entrada un cierto valor n y genere como salida el valor de la serie: 1*2 + 2*3 + 3*4 + 4*5 + +(n-1)*n+n*(n+1) int n,suma,i,a; printf("ingrese el numero n:"); suma=0; a=i*(i+1); suma=suma+a; printf("el resultado de la suma es:%d",suma); 5-Construya un algoritmo que reciba como entrada dos valores: a y b, donde a < b. Este algoritmo debe generar como salida los múltiplos de a que son menores que b. int a,b,i,k; printf("ingrese a:"); scanf("%d",&a); printf("ingrese b:"); scanf("%d",&b); if(a<b){ printf("los multiplos de a son:\n");
while(i<b){ if(a%i==0){ printf("\n\t%d",i); else{ printf("\ningrese a y b, de tal forma que a<b"); 6-Construya un algoritmo que reciba como entrada una secuencia de valores numéricos y genere como salida la suma de los valores pares y la multiplicación de los impares. Considere que un valor negativo significa que no hay más datos y no debe ser considerado como dato válido. int n,i,dato,pares,multiplicados; printf("ingrese el numero de valores:"); pares=0; multiplicados=1; printf("valor:"); scanf("%d",&dato); if(dato%2==0){ pares=pares+dato; if(dato%2==1){ multiplicados=multiplicados*dato; printf("la suma de los pares es:%d\n",pares); printf("la multiplicacion de los impares es:%d",multiplicados); 7-Construya un algoritmo que genere como salida los términos de la siguiente serie: 2, 5, 7, 10, 12, 15, 17,,1800. int i,pares,impares; printf("los terminos de la serie son:\n"); i=0; while(i<=359){ pares=5*i+2; impares=5*i+5; printf("-%d-%d",pares,impares);
8-Construya un algoritmo que genere los términos de la siguiente serie, y además calcule su valor para un n dado: 1-1/2+1/3-1/4+1/5-...+1/n float suma,n,i; printf("ingrese la cantidad de terminos:"); scanf("%f",&n); suma=0; suma=suma+pow((double)-1,(double)i+1)*(1/i); i++; printf("el resultado es:%f",suma); 9-Construya un algoritmo que reciba como entrada un valor n y calcule una aproximación del valor de e, como la suma de la siguiente serie: 1+1/2!+1/3!+1/4!+1/5!+...+1/n! int n,i; float suma,den; printf("ingrese el valor de n:"); suma=0; den=1; den=den*i; suma=suma+1/den; printf("una aproximacion del numero e es:%f",suma); 10-El valor de e^x se puede aproximar por la suma: 1+(x/1!)+(x^2/2!)+(x^3/3!)+(x^4/4!)+...+(x^n/n!) Escriba un algoritmo que tome valores para x y n como entrada y visualice la suma para los valores proporcionados desde teclado. int n,i,x; float suma,pot,f; printf("ingrese el valor n:"); printf("ingrese el valor x:"); scanf("%d",&x); pot=1; suma=1; f=1; f=f*i; pot=pot*x; suma=suma+pot/f;
printf("la suma de e^x es:%f",suma); 11-Escriba un algoritmo que permita imprimir el resultado de la siguiente suma: Sn(a,b) = 1/a + 1/(a + b) + 1/(a +2b) + 1/ (a + 3b)+. +1/ (a + nb),en donde a, b y n se ingresan por teclado. int n,i,a,b; float suma,den; printf("ingrese a:");scanf("%d",&a); printf("ingrese b:");scanf("%d",&b); printf("ingrese n:"); i=0; suma=0; den=a+i*b; suma=suma+(1/den); printf("el resultado de la suma es Sn(%d,%d)=%f",a,b,suma); 12-Se tiene una tabla con los datos de matrícula, peso, estatura y sexo de los alumnos de la USACH. Construya un algoritmo que reciba los datos de la tabla antes mencionada, calcule y genere como salida el promedio de los pesos y de las estaturas. Su algoritmo debe entregar estos valores considerando todos los individuos y también diferenciando por sexo. Considere el fin de datos de matrícula con el valor cero (0). int n,i,sexo,matricula,canthombres,cantmujeres;//a=1(hombre) a=0(mujer) float prompesohombres,prompesomujeres,peso,altura,hombres,estaturah, mujeres,estaturam,x,y,promediopeso,promedioaltura; printf("ingrese el numero de alumnos:"); hombres=0; estaturah=0; mujeres=0; estaturam=0; canthombres=0; cantmujeres=0; printf("\nmatricula:");scanf("%d",&matricula); printf("sexo (hombre=1,mujer=0):");scanf("%d",&sexo); if(matricula>0){ if(sexo==1){ printf("peso:");scanf("%f",&peso); printf("altura:");scanf("%f",&altura); hombres=hombres+peso; estaturah=estaturah+altura; canthombres=canthombres+1; else{ printf("peso:");scanf("%f",&peso); printf("altura:");scanf("%f",&altura); mujeres=mujeres+peso; estaturam=estaturam+altura; cantmujeres=cantmujeres+1;
prompesohombres=hombres/canthombres; prompesomujeres=mujeres/cantmujeres; X=estaturaH/cantHombres; Y=estaturaM/cantMujeres; promediopeso=(hombres+mujeres)/(canthombres+cantmujeres); promedioaltura=(estaturah+estaturam)/(canthombres+cantmujeres); printf("\nel promedio de peso entre hombres:%f",prompesohombres); printf("\nel promedio de peso entre mujeres:%f",prompesomujeres); printf("\nel promedio de altura entre hombres:%f",x); printf("\nel promedio de altura entre mujeres:%f",y); printf("\nel promedio total del peso de los alumnos:%f",promediopeso); printf("\nel promedio total de la altura de los alumnos:%f",promedioaltura); 13-Dado como entrada un fecha expresada en: día (1 al 31), mes (1,12) y año (en número), genere como salida la fecha del día siguiente. Indicación: considere meses de 31 días enero, marzo, mayo, julio, agosto, octubre, diciembre, y todos los restantes de 30 días, salvo febrero que siempre tendría 28. int dia,mes,ano,nuevodia,nuevomes,nuevoano; printf("***ingrese la Fecha***\n"); printf("lista de los meses del año:\n"); printf("\t1-enero\n \t2-febrero\n \t3-marzo\n \t4-abril\n \t5-mayo\n"); printf("\t6-junio\n \t7-julio\n \t8-agosto\n \t9-septiembre\n"); printf("\t10-octubre\n \t11-noviembre\n \t12-diciembre\n"); printf("\n-ingrese el mes (entre 1 y 12):"); scanf("%d", &mes); //Se puede ingresar desde el mes 1 al 12, en el caso contrario //debera ingresarse el mes nuevamente while(mes<1 mes>12){ printf("\nmes ingresado incorrecto.\n"); printf("ingrese el mes nuevamente: "); scanf("%d", &mes); //Mes de Enero, Marzo, Mayo, Julio, Agosto, Octubre y Diciembre if(mes==1 mes==3 mes==5 mes==7 mes==8 mes==10 mes==12){ printf("\n-ingrese el dia: ");scanf("%d", &dia); //Se pueden ingresar numeros desde el 1 hasta la indicacion en el //enunciado del problema while(dia < 1 dia>31){ printf("dia ingresado incorrecto.\n"); printf("ingrese el dia nuevamente: ");scanf("%d", &dia); printf("\n-ingrese el ano: ");scanf("%d", &ano); if(dia<31 && mes!=12){ nuevodia=dia+1; nuevomes=mes; else if(dia==31 && mes!=12){ nuevodia=1; nuevomes=mes+1; else if(dia==31 && mes==12){ nuevodia=1;
nuevomes=1; nuevoano=ano+1; //Mes de Abril, Junio, Septiembre y Noviembre if(mes==4 mes==6 mes==9 mes==11){ printf("\n-ingrese el dia: ");scanf("%d", &dia); while(dia < 1 dia>30){ printf("dia ingresado incorrecto.\n"); printf("ingrese el dia nuevamente: ");scanf("%d", &dia); printf("\n-ingrese el ano: ");scanf("%d", &ano); if(dia<30){ nuevodia=dia+1; nuevomes=mes; else if(dia==30){ nuevodia=1; nuevomes=mes+1; //Mes de Febrero if(mes==2){ printf("\n-ingrese el dia: ");scanf("%d", &dia); while(dia < 1 dia>28){ printf("dia ingresado incorrecto.\n"); printf("ingrese el dia nuevamente: ");scanf("%d", &dia); printf("\n-ingrese el ano: ");scanf("%d", &ano); if(dia<28){ nuevodia=dia+1; nuevomes=mes; else if(dia==28){ nuevodia=1; nuevomes=mes+1; //RESULTADOS printf("\n\n-la fecha es: %d/%d/%d\n",dia,mes,ano); printf("-la fecha del dia siguiente es:%d/%d/%d\n",nuevodia,nuevomes,nuevoano); 14-Se dice que todos los números que se pueden generar a partir de la fórmula 4n + 3 son primos. Construya un programa que genere los 100 primeros números de la serie dada por la fórmula anterior y en cada caso determine si es que efectivamente el número es primo. La comprobación la puede hacer determinando si el número tiene o no divisores. #define n 100 int i,j,cont,p; for(i=0;i<n;i++){ p=(4*i)+3; cont=0; for(j=1;j<=p;j++){ if(p%j==0){ cont=cont+1;
if(cont==2){ printf("\n%d) El numero %d es Primo",i+1,p); 15-Se dice que un número es perfecto si la suma de los divisores del número es igual al número. Escriba un programa que determine si un número ingresado como entrada a un programa es perfecto o no. Por ejemplo 6 y 28 son números perfectos.[los numeros perfectos estan dados por:(2^(n-1))*((2^n)-1)] int i,n,sum=0; printf("ingrese un numero:"); printf("los multiplos de a son:\n"); for(i<n;i++){ if(n%i==0){ printf("%d ",i); sum=sum+i; if(n==sum){ printf("\n\nel numero %d es perfecto",n); else{ printf("\n\nel numero %d NO es perfecto",n); 16-Escriba otro programa que determine los números perfectos que existen en un rango de 1 a n, donde n es una entrada del programa. int i,j,n,sum; printf("ingrese el numero Limite Superior del Rango:"); for(i<=n;i++){ sum=0; for(j=1;j<i;j++){ if(i%j==0){ sum=sum+j; if(i==sum){ printf("\n\nel numero %d es perfecto",i);
17-Se dice que un número es deficiente si no alcanza a ser perfecto. En este caso, si la suma de los divisores del número es menor que el número. En el sentido contrario, se dice que un número es abundante si la suma de sus divisores lo sobrepasa. Construya un programa que para un rango de 1 a n, siendo n una entrada del programa, determine si el número es deficiente, perfecto o abundante. Indique además el total de cada uno de ellos en ese rango. int i,j,n,sum,perfectos=0,abundantes=0,deficientes=0; printf("ingrese el numero Limite Superior del rango:"); for(i<=n;i++){ sum=0; for(j=1;j<i;j++){ if(i%j==0){ sum=sum+j; if(i==sum){ printf("\nel numero %d es Perfecto",i); perfectos++; else if(i>sum){ printf("\nel numero %d es Deficiente",i); deficientes++; else if(i<sum){ printf("\nel numero %d es Abundante",i); abundantes++; printf("\n\n"); printf("\nla cantidad de numeros Perfectos son:%d",perfectos); printf("\nla cantidad de numeros Deficientes son:%d",deficientes); printf("\nla cantidad de numeros Abundantes son:%d",abundantes); 18-Se dice que dos números son primos gemelos si ambos son primos y están separados por una distancia de 2. Por ejemplo, primos gemelos conocidos son: 3 y 5; 5 y 7; 11 y 13; 17 y 19, etc. Construya un programa que dado dos números n1 y n2 indique si son primos gemelos o no. int i,n1,n2,cont; printf("ingrese el primer numero:");scanf("%d", &n1); printf("ingrese el segundo numero:");scanf("%d", &n2); cont=0; for(i<=n1;i++){ if(n1%i==0){ cont=cont+1; if(cont==2){ printf("\nel numero %d es Primo",n1); cont=0; for(i<=n2;i++){ if(n2%i==0){
cont=cont+1; if(cont==2){ printf("\nel numero %d es Primo",n2); if(n1+2==n2 n2+2==n1){ printf("\nlos numeros son primos gemelos"); else{ printf("\nlos numeros No son primos gemelos"); 19-Construya un programa que dado un rango de 1 a n, siendo n una entrada del programa, determine los primos gemelos que se encuentren en ese rango. int i,j,n,cont1,cont2; printf("ingrese el numero Limite Superior del Rango:"); printf("\nlos numeros son primos gemelos entre 1 y %d son:\n",n); for(i<=n;i++){ cont1=0; for(j=1;j<=i;j++){ if(i%j==0){ cont1=cont1+1; cont2=0; for(j=1;j<=(i-2);j++){ if((i-2)%j==0){ cont2=cont2+1; if(cont1==2 && cont2==2){ printf("\nel numero %d es Primo",i-2); printf("\nel numero %d es Primo",i); printf("\nlos numeros son primos gemelos"); printf("\n\n"); 20-Se dice que dos números son amigos si la suma de los divisores de uno dan como resultado el valor del otro y viceversa. Construya un programa que determine si dos números n1 y n2 ingresados por teclado son amigos. //Un ejemplo de numeros amigos son el numero 220 y 284. //Los divisores de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que //suman 284. //Los divisores de 284 son 1, 2, 4, 71 y 142, que suman 220. int i,j,n1,n2,sum1,sum2; printf("ingrese el primer numero:");scanf("%d", &n1); printf("ingrese el segundo numero:");scanf("%d", &n2); sum1=0; printf("\nlos multiplos de %d son:",n1); for(i<n1;i++){
if(n1%i==0){ printf("%d ",i); sum1=sum1+i; sum2=0; printf("\nlos multiplos de %d son:",n2); for(j=1;j<n2;j++){ if(n2%j==0){ printf("%d ",j); sum2=sum2+j; if(n1==sum2 && n2==sum1){ printf("\n\nlos numeros %d y %d son amigos",n1,n2); else{ printf("\n\nlos numeros %d y %d NO son amigos",n1,n2);