Análisis de Algoritmos y Estructuras de Datos
Práctica 1: Programación con C++
Versión 1.0
Ejercicios
1. Considere la siguiente función:
void muestra_temperatura(int temperatura)
{
cout << "Temperatura: " << temperatura << " grados ";
if (temperatura > 20)
if (temperatura < 30)
cout << "(normal)";
else
cout << "(baja)";
cout << endl;
}
a) ¿Cuál es el resultado de las siguientes llamadas?
muestra_temperatura(10);
muestra_temperatura(27);
muestra_temperatura(40);
b) ¿Cree que coincide con las expectativas del programador? ¿A qué se debe?
2. Considere la siguiente función:
void muestra_temperatura(int temperatura)
{
cout << "Temperatura: " << temperatura << " grados ";
if (20 < temperatura < 30)
cout << "(normal)";
else
cout << "(anormal)";
cout << endl;
}
Explique el resultado de las siguientes llamadas a la función:
1
muestra_temperatura(10);
muestra_temperatura(27);
muestra_temperatura(40);
3. ¿Qué problema hay con el siguiente programa?
#include <iostream>
int main()
{
using namespace std;
cout << SOS() << endl;
}
const char∗ SOS() { return "... ___ ..."; }
Comente, al menos, dos posibles soluciones.
4. El siguiente programa se compone de una cabecera y dos módulos:
a) Cabecera:
#include <iostream>
int Visitas ;
void visita (const char∗ arg);
b) Módulo auxiliar, que incluye la cabecera:
#include "visita.h"
void visita (const char∗ arg)
{
using namespace std;
cout << "Visita: " << arg << endl;
// ...
++Visitas;
}
c) Módulo principal, que incluye la cabecera:
#include "visita.h"
int main(int argc, char∗ argv[])
{
using namespace std;
Visitas = 0;
while (∗++argv)
visita (∗argv);
cout << "Visitas: " << Visitas << endl;
}
2
¿Ve algún problema? Si es así, explique cómo solucionarlo con el mínimo esfuerzo. Realice
una crítica razonada de este estilo de programación.
5. ¿Hay algún problema con el siguiente programa? Si lo hay, explique cuál. Si no, explique
qué salida produce.
#include <iostream>
int main()
{
using namespace std;
int v[10] = { 1, 2, 3, };
for (int i = 0; i < 10; ++i)
cout << v[i] << ’ ’;
cout << endl;
}
6. Escriba una función que se expanda en línea y, utilizando referencias, intercambie los
valores de sus tres parámetros enteros rotándolos a la izquierda. Sobrecargue esta fun-
ción utilizando punteros. Después compare y contraste las dos funciones y la manera de
llamarlas.
7. ¿Qué problema hay con el siguiente programa?
#include <iostream>
int main()
{
cout << "Hola." << endl;
}
Explique, al menos, tres formas distintas de resolverlo.
8. Escriba un programa que calcule el cuadrado de un double leído de la entrada estándar e
imprima el número de veces que puede repetir dicho cálculo durante un segundo. Emplee
una función que se expanda en línea para obtener el cuadrado de un número.