Respuestas Guia 07 (Estructuras de Control en C++)

17
Fundamentos de Programación 2008 UNIDAD 7 Operadores y Estructuras de Control en C++ Prof. Gerardo Sas Respuestas a los ejercicios de la Guía Nº 7 Ejercicio 7.1 Utilice la notación de los operadores aritméticos y funciones matemáticas que provee C++ para escribir las siguientes expresiones. Si le facilita la tarea, puede utilizar variables auxiliares. a) b) c) a= ( - b + sqrt ( pow( b , 2 ) - 4 * a * c ) / ( 2 * a ) ; ( - b + sqrt ( pow( b , 2 ) - 4 * a * c ) / ( 2 * a ) ; b= LN( 2 * x – 1 ) + ( - EXP( 2 * x ) + pow( pow(x,a) – 3 * a * x ) , ( 1 / 5 ) ) ) / ( 2 * x – 1 ) c= EXP( a ) / ( a – x ) + (EXP( a + z ) + sin( a – x ) + EXP( pow(x,2) ) ) / 2; Ejercicio 7.2 Utilice los operadores aritméticos de C++ para plantear las expresiones que se proponen coloquialmente. Si es posible exprese también la forma abreviada correspondiente.

Transcript of Respuestas Guia 07 (Estructuras de Control en C++)

Page 1: Respuestas Guia 07 (Estructuras de Control en C++)

Fundamentos de Programación 2008UNIDAD 7

Operadores y Estructuras de Control en C++Prof. Gerardo Sas

Respuestas a los ejercicios de la Guía Nº 7

Ejercicio 7.1Utilice la notación de los operadores aritméticos y funciones matemáticas que provee C++ para escribir las siguientes expresiones. Si le facilita la tarea, puede utilizar variables auxiliares.

a)

b)

c)

a= ( - b + sqrt ( pow( b , 2 ) - 4 * a * c ) / ( 2 * a ) ; ( - b + sqrt ( pow( b , 2 ) - 4 * a * c ) / ( 2 * a ) ;b= LN( 2 * x – 1 ) + ( - EXP( 2 * x ) + pow( pow(x,a) – 3 * a * x ) , ( 1 / 5 ) ) ) / ( 2 * x – 1 ) c= EXP( a ) / ( a – x ) + (EXP( a + z ) + sin( a – x ) + EXP( pow(x,2) ) ) / 2;

Ejercicio 7.2 Utilice los operadores aritméticos de C++ para plantear las expresiones que se proponen coloquialmente. Si es posible exprese también la forma abreviada correspondiente.

a) El cociente entre m y n.m / n;

b) El resto de la división entera entre p y q. p % q;

c) Incrementar x en 1.x = x+1; x++; ++x; x += 1

d) Incrementar x sumando a x el contenido de c.x= x+c; x += c;

e) Modificar z, asignándole el valor que precede a z.z= z-1; --z; z--; z -= 1

Page 2: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 2

Ejercicio 7.3Considere las declaraciones de un programa C++, donde se definen las variables x, y, z, u como se indica abajo:

float x = 4.5; y = 12.3int z = 10; u = 8;char letra = ‘m’;

Determine el resultado de las siguientes expresiones lógicas:a) x < y (verdad) f) (z>x)&&(letra<'m')||(letra=='h')(falso)b) (x <= y) || (letra == 'j')(verdad) g) '2' <= letra (verdad)c) letra <= 'G' (falso) h) ('q' < 's') || false (verdad)d) abs(x-y) > 7.0 (verdad) i) sin(y-x) <= 1 (verdad)e) u++ >= z-- && 1(falso) j) touper(letra) == ‘M’ (verdad)

#include<iomanip>//Pequeño programa que cumple con el enunciado del Ej 7.3#include<conio.h>#include<math.h>int main(void){float x = 4.5, y = 12.3;int z = 10, u = 8;char letra = 'm';

cout<<"\na) x < y";if (x<y) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;

cout<<"\nb) (x <= y) || (letra =='j')";if ((x <= y) || (letra =='j')) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;cout<<"\nc) letra <= 'G'";if (letra <= 'G') cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;cout<<"\nd) abs(x-y) > 7.0";if (abs(x-y) > 7.0) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;cout<<"\ne) u++ >= z-- && 1";if (u++ >= z-- && 1)

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 3: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 3

cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;cout<<"\nf) (z>x)&&(letra<'m')||(letra=='h')";if ((z>x)&&(letra<'m')||(letra=='h')) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;

cout<<"\ng) '2' <= letra";if ('2' <= letra) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;

cout<<"\nh) ('q' < 's') || false";if (('q' < 's') || false) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;

cout<<"\ni) sin(y-x) <= 1";if (sin(y-x) <= 1) cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;

cout<<"\nj) touper(letra) == 'M'";if (toupper(letra) == 'M') cout<<"\nVerdadero";else cout<<"\nFalso";cout<<endl;getch();//Profesor Gerardo Sas - Fundamentos de Programacion - IIA - FICH - UNL.}

Ejercicio 7.4Utilice las variables x, y, z, u definidas en el ejercicio anterior para calcular las siguientes expresiones matemáticas

a) ++u / 2 (4) f) 2*--u+x/3 (19.5)b) letra + 2 (111) g) letra += 1 (‘n’)c) (x-y)/2+abs(u-y) (-0.9) h) pow( z,3) (1000)d) 3 + u % 3 (3) i) x = (x+1 ) / 2 (2.75)e) u++ / 2 (4) j) u += (z<100) (10)

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 4: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 4

Ejercicio 7.5Observe las siguientes porciones de código C++ siguientes. Trate de determinar la información que se obtendrá como salida a través del flujo cout.

a) int x=50;cout << ++x << “ “ << x;cout << x;

51 5051

b) int y=100;int z = --y;cout << z << “ “ << y;

99 99c) int y=200;

int z = y--;cout << z << “ “ << y;

200 199

Ejercicio 7.6A continuación se plantea una definición de tipo enumerado, y un grupo de expresiones lógicas que emplean datos de ese tipo. Determine el resultado de cada expresión.

enum lenguajes=(fort,cob,bas,pas,ada,cpp,sql);

expresión resultado ------------------ -------------------cob < pas Verdaderofort <= ada Verdadero

((int)bas)-- == cob ERROR (Falso)(int)ada < 5 Verdadero

3==((int)cpp )++ ERROR (Falso)

En todos los casos en que el problema proponga escribir un programa, Ud. debe además salvar en diskette, compilar, --si es necesario-- depurar, y ejecutar (probar) el programa propuesto.//Encabezado: aquí se incluyen las librerías//Profesor Gerardo SAS - Fundamentos de Programación#include <iostream>#include <iomanip>using namespace std;int main(void){enum lenguajes {fort,cob,bas,pas,ada,cpp,sql};int h=30;cout<<setw(20)<<" expresion resultado\n";cout<<setw(20)<<" ------------------ -------------------\n";cout<<setw(20)<<" cob < pas"<<setw(h);if (cob < pas) cout<<"Verdadero\n"; else cout<<"Falso\n";cout<<setw(20)<<"fort <= ada"<<setw(h);;if (fort <= ada) cout<<"Verdadero\n"; else cout<<"Falso\n";cout<<setw(20)<<"(int)bas)-- == cob )++ "<<setw(h);

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 5: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 5

if ((int)bas== cob) cout<<"Verdadero\n"; else cout<<"Falso\n";cout<<setw(20)<<"(int)ada < 5"<<setw(h);if ( (int)ada < 5) cout<<"Verdadero\n"; else cout<<"Falso\n";cout<<setw(20)<<"3==((int)cpp )++"<<setw(h);if (3==((int)cpp )) cout<<"Verdadero\n"; else cout<<"Falso\n";return 0;}

Ejercicio 7.7Ingrese un número e informe: a) si es par o impar; b) si es múltiplo de 5 y 3 a la vez.

#include <iostream>using namespace std;

int main(int argc, char *argv[]) {int n;cout<<"Ingrese un Numero: ";cin>>n;if (n%2==0)

cout<<"Es par"<<endl;else

cout<<"Es Impar"<<endl;if ((n%3==0)&&(n%5==0))

cout<<"Es Multiplo de 3 y de 5."<<endl;else

cout<<"No es Multiplo de 3 y de 5."<<endl;return 0;

}

Ejercicio 7.8Ingrese tres números e informe el mayor.#include <iostream>using namespace std;

int main(int argc, char *argv[]) {int a,b,c,mayor;cout << "Ingrese 3 numeros:"<<endl;cin>>a;cin>>b;cin>>c;if ((a>b)&&(a>c))

mayor= a;else

if ((b>a)&&(b>c))mayor= b;

elsemayor= c;

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 6: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 6

cout<<"El mayor es: "<<mayor<<endl;return 0;}

Ejercicio 7.9Deseamos saber si un estudiante de primer año vota en las próximas elecciones, para ello debe ser mayor de 18 años. Se ingresan la fecha de nacimiento y de votación con formato día, mes y año. Informe con un mensaje alusivo.

#include <iostream>using namespace std;

int main(int argc, char *argv[]) {int av,mv,dv, an,mn,dn;cout<<"Ingrese anio, mes y dia de nacimiento"<<endl;cin>>an;cin>>mn;cin>>dn;cout<<"Ingrese anio, mes y dia de Votacion"<<endl;cin>>av;cin>>mv;cin>>dv;if (((av*10000+mv+100+dv)-(an*10000+mn+100+dn))>=180000)

cout<<"Tiene 18 anios o mas, puede votar"<<endl;else

cout<<"No tiene 18 anios, NO puede votar"<<endl;return 0;

}

Ejercicio 7.10Resolver una ecuación de segundo grado, cuyas soluciones pueden ser reales o complejas, ingresando los coeficientes a, b y c. Si las raíces fueran complejas mostrarlas en forma binómica (ej: -2+3i)

#include <iostream>#include <math.h>using namespace std;

int main(int argc, char *argv[]) {float a,b,c,d,x,y;cout<<"Ingrese los coeficientes a b c de la ecuacion de 2do grado"<<endl;cin>> a;cin>> b;cin>> c;d = pow(b,2) - 4* a * c;if (d>0){

x= (-b + sqrt(d))/(2*a);y= (-b - sqrt(d))/(2*a);cout<<"X1 = "<<x<<endl;cout<<"X2 = "<<y<<endl;}

else{x= -b/(2*a);

y= sqrt(-1*d)/(2*a); cout<<"X1 = "<<x<<" + "<<y<<" i "<<endl; cout<<"X2 = "<<x<<" - "<<y<<" i "<<endl;}

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 7: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 7

return 0;}Ejercicio 7.11.Escriba un programa C++ que permita ingresar natural N como dato. Obtener todos los pares menores a N. Tener en cuenta que el dato puede ser tanto par como impar.Debe dar al usuario la posibilidad de seleccionar por un menú la opción de visualizar el listado:

a) En forma creciente.b) En forma decreciente.

//Encabezado: aquí se incluyen las librerías//Profesor Gerardo SAS - Fundamentos de Programación#include <iostream>#include <iomanip>using namespace std;int main(void){int x,N;char op;cout<< "Ingrese un numero: ";cin>>N;if ( (N%2)!= 0) x=N+1;else x=N;cout<<"\n\nIngrese una Opcion\n\n\n\n";cout<<"\na) En forma creciente.\n";cout<<"\nb) En forma decreciente.\n";do{ cin>>op;}while ((op!='a') && (op!='b'));

if (op=='a'){ cout<< "\nNumeros Pares crecientes menores "<<N << "\n\n\n";

x=0; while (x<N-2){

x=x+2; cout << setw(8) << x << setw(8); }; } else {cout<< "\nNumeros Pares Menores que "<<N << "\n\n\n"; while (x>2){ x=x-2; cout << setw(8) << x << setw(8); }; } return 0;}

Ejercicio 7.12Leer un número natural N. Determinar con un mensaje alusivo si es primo.

#include <iostream.h>#include <iomanip.h>using namespace std;int main(void){

int x,n;

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 8: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 8

cout<<"Ingrese un Numero: ";cin>>n;bool bandera= true;x=2;while ((x < n/2)&&(bandera)){ x++;

if ( (n%x) == 0 )bandera= false;

};if (!bandera)

cout << n << setw(15)<< "No es Primo";else

cout << n << setw(10)<< "Es Primo";return 0;

}

Ejercicio 7.13.Determine los 1000 primeros primos.

//Encabezado: aquí se incluyen las librerías//Profesor Gerardo SAS - Fundamentos de Programación#include <iostream>#include <iomanip>using namespace std;int main(void){ int x,n,r,cp=0; n=1; while (cp<1000){ bool bandera= false; n++; x=1; while (x < n/2) { x+=1; r= n%x; if ( r == 0 ) {bandera=true; break;}; }; if (!bandera){ cp++; cout << setw(8)<< n; }; };return 0;}

Ejercicio 7.14.

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 9: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 9

Calcular la suma de los N primeros términos de la serie infinita, que calcula aproximadamente el seno del parámetro x. Se leen como datos N y x. Obtener además, la diferencia con el valor de la función standard que provee C++.

//Profesor Gerardo SAS - Fundamentos de Programación#include <iostream>#include<math.h>using namespace std;int main(void){int n,t,z,sig = -1;float x,sum=0;cout<<"Ingrese la cantidad de terminos N: ";cin>>n;cout<<"\nIngrese la parametro X: ";cin>>x;x=x*M_PI/180;for (t=1; t<(n*2); t+=2){ int f=1; for (z=t; z>0; z--) f=f*z; sig*=(-1); sum = sum+sig*(pow(x,t)/f); };cout<<"\n Resultado Serie(x)= "<<sum;cout<<"\n Resultado Sin(x) = "<<sin(x);return 0;}

Ejercicio 7.15Escribir un programa C++ que exhiba en pantalla el siguiente menú:

Diseño de menús en C++

CALCULOSA- Ingresar nuevo dato.B- Calcular el doble del dato.C- Determinar si es par.D- Determinar si es primo.E- Salir.

Elija una Opción (A..E): _

El programa debe resolver las opciones propuestas en el menú.Además debe validar la entrada de la opción (A..E) indicando un mensaje de error si corresponde.Si el usuario intenta elegir las opciones B,C,D o E sin haber pasado antes por A, indicar dicha situación con un mensaje alusivo, para que vuelva al menú e ingrese el dato faltante.

//Profesor Gerardo SAS - Fundamentos de Programación#include<iostream>#include<iomanip>#include<conio.h>#include<math.h>using namespace std;

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 10: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 10

int main(void){bool bandera=false;int dato;char op=' ';while (op!='E'){ cout<<"Diseño de menúes en C++"<<endl<<endl; cout<<" CALCULOS"<<endl; cout<<" A- Ingresar nuevo dato."<<endl; cout<<" B- Calcular el doble del dato. "<<endl; cout<<" C- Determinar si es par."<<endl; cout<<" D- Determinar si es primo."<<endl; cout<<" E- Salir."<<endl; cout<<"Elija una Opción (A..E): "; do{ do{ cin>>op; op= toupper(op); if (op=='A') bandera=true; } while ((op<'A')||(op>'E'));//valida opciones de A - E. } while ((op!='A')&&(!bandera));//mientras los 2 sean verdad switch (op){ case 'A':{ cout<<"A- Ingresar nuevo dato: "; cin>>dato; break;}; case 'B':{//Calcula el doble del dato cout<<"B - El doble de "<<dato<<" es "<<dato*2; break;}; case 'C':{//Verifica si es par if (dato%2==0) cout<<"C - el numero "<<dato<<" es par "; else cout<<"C - el numero "<<dato<<" no es par "; break;}; case 'D':{//Comprueba si es Primo cout<<"C - el numero "<<dato; int r,x,n=dato; bool bandera= false; x=2; while (x < n/2) { x++; r= n%x; if ( r == 0 ) bandera=true; }; if (!bandera)

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 11: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 11

cout << setw(8)<< " es Primo"; else cout << setw(8)<< " no es Primo"; break;}; case 'E':{ cout<<"Gracias por utilizar nuestro programa\n\n"; break;}; };//fin del switch. cout<<"\n\n\n\n\n\nPulse una tecla para continuar"; getch();};//del while op}//del main//Profesor Gerado Sas - Fundamentos de Programación

Ejercicio 7.16Escriba todos los caracteres del código ASCII. b) Sólo las letras del abecedario en mayúsculas. c) Las letras del abecedario en minúsculas.

//Profesor Gerardo SAS - Fundamentos de Programación#include<iostream>#include<iomanip.h>using namespace std;int main(void){

char letra, inicio, fin;int x;//---------------------------------------inicio =1;//la tabla ASCII tiene 256 caracteresfin =120;// los demas no los muestra en pantallafor (letra=inicio; letra <= fin; letra+=1)

cout<<letra<<setw(2);cout<<"\n\n\n\n";//---------------------------------------inicio ='A';fin ='Z';for (letra=inicio; letra <= fin; letra+=1)

cout<<letra<<setw(2);cout<<"\n\n\n\n";//---------------------------------------inicio ='a';fin ='z';for (letra=inicio; letra <= fin; letra+=1)

cout<<letra<<setw(2);//---------------------------------------return 0;

}

Ejercicio 7.17Complete el programa C++ cuyo cuerpo de sentencias es el siguiente, siendo z una variable del tipo enumerado LENGUAJES. El tipo LENGUAJES se ha definido en el ejercicio 6. Pruebe el programa en su computadora.

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 12: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 12

..... main { ..... ..... for (z=fort; z<sql; ++(int)z) cout << z << “ “;

getch( );

} //fin del programa

SALIDA: invalid conversión from ‘int’ to ‘lenguajes’

#include<iostream>using namespace std;typedef enum lenguajes {fort,cob,bas,pas,ada,cpp,sql};

int main(void){lenguajes z;for (z = fort; z <= sql; z=z+1)

{cout << z << " ";};return 0;

}

// De esta manera si funciona.#include<iostream>using namespace std;typedef enum lenguajes {fort,cob,bas,pas,ada,cpp,sql};

int main(void){lenguajes z= fort;cout << z << endl;z= cob;cout << z << endl;z= bas;cout << z << endl;z= pas;cout << z << endl;z= ada;cout << z << endl;z= cpp;cout << z << endl;z= sql;cout << z << endl;return 0;

} //SALIDA: 0 1 2 3 4 5 6

Ejercicio 7.18Una Empresa paga a sus 100 operarios semanalmente de acuerdo con la cantidad de horas trabajadas, a razón de X pesos la hora hasta 40 hs. y un 50% más por todas las horas que pasan de 40. Informar el total de salario a cobrar por cada trabajador.

#include <iostream>

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 13: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 13

using namespace std;

int main(int argc, char *argv[]) {float x,sueldo, extras;int operario=0, horas;cout<<"Ingrese el valor de la hora:"<<endl;cin>>x;while (operario<100){

operario++;cout<<"Ingrese la cantidad de horas trabajadas por este operario en la

semana:"<<endl;cin>>horas;if (horas > 40)

sueldo= (horas-40) * 1.5 * x + x * 40;else

sueldo= x * horas;cout<<"Cantidad de horas trabajadas: "<<horas<<". Salario

semanal:"<<sueldo<<endl<<endl<<endl;}return 0;

}

Ejercicio 7.19Exhibir en pantalla 50 datos numéricos generados al azar entre 1 y 5000. Obtener como salida los siguientes parámetros estadísticos: a) la media; b) los 2 mayores y c) el menor de la lista.

//Profesor Gerardo SAS - Fundamentos de Programación#include<iostream>#include<iomanip.h>using namespace std;int main(void){

int x,c,ma1,ma2,me;float media=0,ds=0;//El primer dato sera el mayor y menor de la listama1= 0;me= 5000;for (x=1; x<= 50; x++){

c= rand()%5000+1;cout<<"dato "<<x+1<<" :"<<c<<endl;if (c<me) me = c;if (c>ma1){

ma2=ma1;ma1=c;

};//del ifmedia+=c;

};//del formedia= media/50.0;cout<<"\na) La media: "<<media;cout<<"\nb) Los 2 mayores: "<<ma1<<" - "<<ma2;cout<<"\nc) El menor de la lista: "<<me;

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación

Page 14: Respuestas Guia 07 (Estructuras de Control en C++)

Unidad 7 14

return 0;}

Facultad de Ingeniería y Ciencias Hídricas de la UNLIngeniería Informática – Fundamentos de Programación