Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EN EL VALLE DE SULA.
Alumna:
Cinthia Marilú Navarro Pérez
Número de Cuenta:
20192001599
Catedrático:
Héctor Adolfo García
Asignatura:
Lenguaje de programación II
Tema:
Capítulo 4
Sección:
1000
c) La expresión (x > y && a < b) es true si la expresión x > y es true, o si la expresión a < b
es true.
R// Falso. Al utilizar el operador &&, ambas expresiones relacionales deben ser true para
que toda la expresión sea true.
d) Una expresión que contiene el operador || es true si uno o ambos de sus operandos son
true.
R// Verdadero.
5.2 Escriba una instrucción o un conjunto de instrucciones en C++, para realizar cada una
de las siguientes tareas:
a) Sumar los enteros impares entre 1 y 99, utilizando una instrucción for. Suponga que se
han declarado las variables enteras suma y cuenta.
suma = 0;
for (cuenta = 1; cuenta <= 99; cuenta += 2)
suma += cuenta;
b) Imprimir el valor 333.546372 en una anchura de campo de 15 caracteres, con precisiones
de 1, 2 y 3. Imprimir cada número en la misma línea. Justificar a la izquierda cada número
en su campo. ¿Cuáles son los tres valores que se imprimen?
cout << fixed << left
<< setprecision (1) << setw (15) << 333.546372
<< setprecision (2) << setw (15) << 333.546372
<< setprecision (3) << setw (15) << 333.546372
<< endl;
La salida es:
333.5 333.55 333.546
d) Imprimir los enteros del 1 al 20, utilizando un ciclo while y la variable contadora x.
Suponga que la variable x se ha declarado, pero no se ha inicializado. Imprimir solamente
cinco enteros por línea. [Sugerencia: use el cálculo x % 5. Cuando el valor de esta
expresión sea 0, imprima un carácter de nueva línea; de lo contrario, imprima un carácter
de tabulación.]
x = 1;
while (x <= 20)
{
cout << x;
if (x % 5 == 0)
cout << endl;
else
cout << '\t';
x++;
}
5.3 Encuentre el(los) error(es), si los hay, en cada uno de los siguientes segmentos de
código, y explique cómo corregirlo(s):
a) x = 1;
x++;
}
R// Error: el punto y coma después del encabezado while provoca un ciclo infinito.
Corrección: reemplazar el punto y coma por una llave izquierda ({), o eliminar tanto el punto y
coma (;) como la llave derecha (}).
c) switch (n)
{
case 1:
cout << "El número es 1" << endl;
case 2:
cout << "El número es 2" << endl;
break;
default:
cout << "El número no es 1 ni 2" << endl;
break;
}
R//Error: falta una instrucción break en el primer case.
Corrección: agregue una instrucción break al final de las instrucciones para el primer case.
Observe que esto no es un error, si el programador desea que la instrucción del case 2: se ejecute
siempre que lo haga la instrucción del case 1:
d) El siguiente código debe imprimir los valores 1 a 10:
n = 1;
while (n < 10)
cout << n++ << endl;
R// Error: se está utilizando un operador relacional inadecuado en la condición de continuación
de la instrucción de repetición while.
Corrección: use <= en lugar de <, o cambie 10 a 11.
5.4 Encuentre el(los) error(es), si los hay, en cada uno de los siguientes fragmentos de
código:
R// Error: primeramente, la variable x no esta declarada, el for no puede escribirse en mayúscula
y cada instrucción en el for no tiene punto y coma.
b) El siguiente código debe imprimirse sin importar que el entero valor sea par o impar:
switch (valor % 2)
case 0:
case 1:
R// El switch no está evaluando una variable, está evaluando un operador y los case no tiene
break.
c) El siguiente código debe imprimir los enteros impares del 19 al 1:
contador = 2;
do
www.FreeLibros.me
contador += 2;
R// El while no puede ser escrita en mayúscula, al principio no se declaro el tipo de variable.
5.5 Escriba un programa que utilice una instrucción for para sumar una secuencia de
enteros. Suponga que el primer entero leído especifica el número de valores que quedan por
introducir. Su programa debe leer sólo un valor por cada instrucción de entrada. Una
secuencia típica de entrada podría ser
int main ()
cin>>contador;
cin>>a;
numero+=a;
return 0;
5.6 Escriba un programa que utilice una instrucción for para calcular e imprimir el
promedio de varios enteros. Suponga que el último valor leído es el valor centinela 9999.
Una secuencia típica de entrada podría ser
10 8 11 7 9 9999
#include <iostream>
using namespace std;
int main ()
{
int enteros = 0, promedio = 0, contador = 0, suma = 0, contadorDos= 0;
for (contador=1; contador <=100000; contador++)
{
cout << "Ingrese el número, para finalizar -1:" << endl;
cin>>enteros;
if (enteros ==-1)
{
break;
}
suma = promedio + enteros;
promedio = suma;
contadorDos++;
}
promedio = suma / contadorDos;
cout << " El promedio es:" << promedio;
return 0;
}
5.7 ¿Qué hace el siguiente programa?
5.8 Escriba un programa que utilice una instrucción for para encontrar el menor de varios
enteros. Suponga que el primer valor leído especifica el número de valores restantes.
#include <iostream>
using namespace std;
int main ()
{
int z, menor, contador;
cout<<" Ingrese los números enteros, registre primero la cantidad de numero:";
cin>>contador;
cin>>menor;
for (int i=1; i<contador; i++)
{
cin>>z;
if (z<menor)
{
menor=z;
}
}
cout<<"El menor de los números es: "<<menor;
return 0;
}
5.9 Escriba un programa que utilice una instrucción for para calcular e imprimir el
producto de los enteros impares del 1 al 15.
#include <iostream>
using namespace std;
int main ()
{
int numero = 1;
cout << " Imprime el producto de los enteros impares del 1 al 15"<< endl;
for (int i=1; i<=15; i++)
{
numero*i;
cout<<i << " ";
}
return 0;
}
5.10 La función factorial se utiliza frecuentemente en los problemas de probabilidad.
Utilizando la definición de factorial del ejercicio 4.35, escriba un programa que utilice una
función for para evaluar las factoriales de los enteros del 1 al 5. Muestre los resultados en
formato tabular. ¿Qué dificultad podría impedir que usted calculara la factorial de 20?
#include <iostream>
using namespace std;
int main ()
{
for (int i = 1; i <= 5; i++)
{
int factorial = 1, enteros = i;
while (0 < enteros)
{
factorial *= enteros--;
}
cout << "El factorial de los enteros " << i << "es:" << factorial << endl;
}
return 0;
}
5.11 Modifique el programa de interés compuesto de la sección 5.4, repitiendo sus pasos
para las tasas de interés del 5, 6, 7, 8, 9 y 10%. Use una instrucción for para variar la tasa
de interés.
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
double monto = 0, principal = 1000.0;
int interes=5;
cout << "Anio" << setw( 21 ) << "Monto en deposito" << endl;
cout << fixed << setprecision( 2 );
for(double tasa = 0.05; tasa <= 0.1; tasa += 0.01 )
{
cout<<"Tasa de interes de:"<<interes<<"\n";
interes+=1;
for ( int anio = 1; anio <= 10; anio++ ){
monto = principal * pow( 1.0 + tasa, anio );
cout << setw( 4 ) << anio << setw( 21 ) << monto << endl;
}
}
return 0;
}
5.12 Escriba un programa que utilice ciclos for para generar los siguientes patrones por
separado, uno debajo del otro. Use ciclos for para generar los patrones. Todos los asteriscos
(*) deben imprimirse mediante una sola instrucción de la forma cout << '*'; (esto hace que
los asteriscos se impriman uno al lado del otro). [Sugerencia: los últimos dos patrones
requieren que cada línea empiece con un número apropiado de espacios en blanco. Crédito
adicional: combine su código de los cuatro problemas separados en un solo programa que
imprima los cuatro patrones, uno al lado del otro, haciendo un uso inteligente de los ciclos
for anidados.]
#include<iostream>
using namespace std;
int main()
{
int i,j,k;
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
{
cout<<"*";
}
cout<<"\n";
}
cout<<"\n";
for(i=1;i<=10;i++)
{
for(j=10;j>=i;j--)
{
cout<<"*";
}
cout<<"\n";
}
cout<<"\n";
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
{
cout<<" ";
}
for(k=10;k>=i;k--)
{
cout<<"*";
}
cout<<"\n";
}
cout<<"\n";
for(i=1;i<=10;i++)
{
for(j=10;j>=i;j--)
{
cout<<" ";
}
for(k=1;k<=i;k++)
{
cout<<"*";
}
cout<<"\n";
}
return 0;
}
5.13 Una aplicación interesante de las computadoras es dibujar gráfi cos convencionales y
de barra. Escriba un programa que lea cinco números (cada uno entre 1 y 30). Suponga que
el usuario sólo introduce valores válidos. Por cada número leído, su programa debe
imprimir una línea que contenga ese número de asteriscos adyacentes. Por ejemplo, si su
programa lee el número 7, debe mostrar *******.
#include<iostream>
int main()
{
int numero = 0;
cout<<"Introduzca un numero del 1 al 30:";
cin>>numero;
for( int i=0;i<numero;i++)
{
cout<<"*";
}
cout<<"\n";
return 0;
}
5.14 Un almacén de pedidos por correo vende cinco productos distintos, cuyos precios de
venta son los siguientes: producto 1, $2.98; producto 2, $4.50; producto 3, $9.98; producto
4, $4.49 y producto 5, $6.87. Escriba un programa que lea una serie de pares de números,
como se muestra a continuación:
b) cantidad vendida.
Su programa debe utilizar una instrucción switch para determinar el precio de venta de
cada producto. Debe calcular y mostrar el valor total de venta de todos los productos
vendidos.
Use un ciclo controlado por centinela para determinar cuándo debe el programa dejar de
iterar para mostrar los resultados finales.
#include<iostream>
using namespace std;
int main()
{
float costo = 0, montoTotal = 0;
int producto = 0, venta = 0;
cout <<"Precios de los productos en el almacen";
cout <<"\nProducto 1: $2.98";
cout <<"\nProducto 2: $4.50";
cout <<"\nProducto 3: $9.98";
cout <<"\nProducto 4: $4.49";
cout <<"\nProducto 5: $6.87\n";
cout <<"\n Introduzca el numero del primer producto ( -1 para terminar):";
cin >> producto;
while ( -1!= producto)
{
switch ( producto )
{
case 1:
{
cout <<"\nIntroduzca la cantidad de venta del producto:";
cin>> venta;
cout << "\nPrecio de esta venta:" <<venta*2.98;
montoTotal +=venta*2.98;
break;
}
case 2:
{
cout <<"\nIntroduzca la cantidad de venta del producto:";
cin>> venta;
cout << "\nPrecio de esta venta:" <<venta*4.50;
montoTotal += venta*4.50;
break;
}
case 3:
{
cout <<"\nIntroduzca la cantidad de venta del producto:";
cin>> venta;
cout << "\nPrecio de esta venta:" <<venta*9.98;
montoTotal += venta*9.98;
break;
}
case 4:
{
cout <<"\nIntroduzca la cantidad de venta del producto:";
cin>> venta;
cout << "\nPrecio de esta venta:" <<venta*4.49;
montoTotal += venta*4.49;
break;
}
case 5:
{
cout <<"\nIntroduzca la cantidad de venta del producto:";
cin>> venta;
cout << "\nPrecio de esta venta:" <<venta*6.87;
montoTotal += venta*6.87;
break;
}
default :
{
cout << "\nIngrese unn numero valido";
break;
}
}
cout << "\nPor favor introduzca el numero del siguiente producto:";
cout << "( -1 para terminar):";
cin >> producto;
}
cout<< "\nLas ventas totales fueron: " << montoTotal;
return 0;
}
5.16 Modifique el programa LibroCalificaciones de las figuras 5.9 a 5.11, de manera que
calcule el promedio de puntos de calificaciones para el conjunto de calificaciones. Una califi
cación A vale 4 puntos, B vale 3 puntos, etcétera.
#include <iostream>
#include <iomanip>
#include <cmath>
int main()
double x;
cout << "Anio" << setw( 21 ) << "Monto de dolares en deposito" <<"Monto de centavos en
deposito"<< endl;
x = monto - int(monto);
cout << setw( 5 ) << anio << setw( 21 ) << int (monto)<< setw( 21 )<<x<< endl;
return 0;
#include<stdio.h>
#include<iostream>
using namespace std;
int main(void)
{
int n, binario, j=0, k, n_temporal, n_temp=0, n_temp1=0;
cout<<"ingrese un numero del 1 al 256: ";
cin>>n;
for(n=1;n<=256;n++)
{
cout<<"binario:\n";
for(binario=1;binario<=n;binario*=2)
j=binario;
for(j=binario;j>=1;j=(binario/=2)){
for(j=binario;j>=1;j=(binario/=2))
{
n_temporal=n;
k=n_temp;
n_temp=n_temporal%j;
if(n_temporal>=j){
n_temp1=k/j;
cout<<n_temp1;
}
}
}
cout<<"\n";
cout<<"octal\n";
for(binario=1;binario<=n;binario*=8)
j=binario;
for(j=binario;j>=1;j=(binario/=8)){
for(j=binario;j>=1;j=(binario/=8))
{
n_temporal=n;
k=n_temp;
n_temp=n_temporal%j;
if(n_temporal>=j){
n_temp1=k/j;
cout<<n_temp1;
}
}
cout<<"\n";
/*hexadecimal*/
cout<<"hexadecimal\n";
for(binario=1;binario<=n;binario*=16)
j=binario;
for(j=binario;j>=1;j=(binario/=16))
{
for(j=binario;j>=1;j=(binario/=16))
{
n_temporal=n;
k=n_temp;
n_temp=n_temporal%j;
if(n_temporal>=j){
n_temp1=k/j;
if(n_temp1==10){
n_temp1='A';
cout<<n_temp1;
}
if(n_temp1==11){
n_temp1='B';
cout<<n_temp1;
}
if(n_temp1==12){
n_temp1='C';
cout<<n_temp1;
}
if(n_temp1==13){
n_temp1='D';
cout<<n_temp1;
}
if(n_temp1==14)
{
n_temp1='E';
cout<<n_temp1;
}
if(n_temp1==15){
n_temp1='F';
cout<<n_temp1;
}
else if(n_temp1>=0 && n_temp1<=9)
cout<<n_temp1;
}
}
cout<<"\n";
}
}
}
return 0;
}
Imprima una tabla que muestre el valor aproximado de π, después de cada uno de los primeros
1000 términos de esta serie.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double s =0;
int n, i;
double a;
cout<<"ingrese el valor:"<<endl;
cin>> n;
for (i=1;i<=n;i++)
{
a=(-4)*pow(-1,i)/(2*i-1);
s= s + a;
}
cout <<"el valor de pi es :"<<s<<endl;
return 0;
}
5.20 (Triples de Pitágoras) Un triángulo recto puede tener lados cuyas longitudes sean
valores enteros. Un conjunto de tres valores enteros para los lados de un triángulo recto se
conoce como triple de Pitágoras. Estos tres lados deben satisfacer la relación que establece
que la suma de los cuadrados de dos lados es igual al cuadrado de la hipotenusa. Encuentre
todos los triples de Pitágoras para lado1, lado2, y la hipotenusa, que no sean mayores de
500. Use un ciclo for triplemente anidado para probar todas las posibilidades. Este método
es un ejemplo de la computación de fuerza bruta. En cursos de ciencias computacionales
más avanzados aprenderá que existen muchos problemas interesantes para los cuales no
hay otra metodología algorítmica conocida, más que el uso de la fuerza bruta.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int Tamano = 500;
cout << "\nEste programa prueba e imprime todas las ternas";
cout << " pitagoricas para numeros no mayores que %d " << Tamano;
cout <<" mediante la fuerza bruta.\n";
for ( int i = 1; i <= Tamano; i++ )
for ( int j = 1; j <= Tamano; j++ )
for ( int k = 1; k <= Tamano; k++ )
{
if ( i*i == j*j + k*k )
cout << "\n" <<i << j << k;
}
return 0;
}
5.22 (Leyes de De Morgan) En este capítulo, hemos hablado sobre los operadores lógicos
&&, || y !. Algunas veces, las leyes de De Morgan pueden hacer que sea más conveniente
para nosotros expresar una expresión lógica. Estas leyes establecen que la expresión !
( condición1 && condición2 ) es lógicamente equivalente a la expresión (! condición1 || !
condición2 ). Además, la expresión !( condición1 || condición2 ) es lógicamente equivalente a
la expresión (! condición1 && !condición2 ). Use las leyes de De Morgan para escribir
expresiones equivalentes para cada una de las siguientes expresiones, luego escriba una
aplicación que demuestre que, tanto la expresión original como la nueva expresión, son
equivalentes en cada caso:
5.23 Escriba un programa que imprima la siguiente figura de rombo. Puede utilizar
instrucciones de salida que impriman un solo asterisco (*) o un solo espacio en blanco.
Maximice el uso de la repetición (con instrucciones for anidadas), y minimice el número de
instrucciones de salida.
#include <stdio.h>
int main()
{
int a, n, n1;
int contador = 1;
for (a = 5; a >= 1; a--){
for (n = 0; n <= a; n++){
printf(" ");
}
for (n1 = 1; n1 <= contador; n1++){
printf("*");
}
printf("\n");
contador += 2;
}
for (a = 4; a >= 1; a--){
for (n = 6; n >= a; n--){
printf(" ");
}
for (n1 = 2; n1 <= contador-3; n1 ++){
printf("*");
}
printf("\n");
contador -= 2;
}
return 0;
}
5.25 Una crítica de las instrucciones break y continue es que ninguna es estructurada. En
realidad, estas instrucciones pueden reemplazarse en todo momento por instrucciones
estructuradas, aunque hacerlo podría ser inadecuado. Describa, en general, cómo
eliminaría las instrucciones break de un ciclo en un programa, para reemplazarlas con
alguna de las instrucciones estructuradas equivalentes. [Sugerencia: la instrucción break se
sale de un ciclo desde el cuerpo de éste. La otra forma de salir es que falle la prueba de
continuación de ciclo. Considere utilizar en la prueba de continuación de ciclo una segunda
prueba que indique una “salida anticipada debido a una condición de ‘interrupción’.”] Use
la técnica que desarrolló aquí para eliminar la instrucción break de la aplicación de la fi
gura 5.13.
#include <iostream>
using namespace std;
int main()
{
int cuenta;
for ( cuenta = 1; cuenta <= 10; cuenta++ )
{
if ( cuenta == 5 )
goto salto;
cout << cuenta << " ";
}
salto:
cout << "\nSalio del ciclo en cuenta = " << cuenta << endl;
return 0;
}
5.26 ¿Qué hace el siguiente segmento de programa?