Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CARRERA: ________________________________________
SEMESTRE: ________________________________________
ASIGNATURA: ________________________________________
ESTUDIANTE: ________________________________________ TIEMPO ESTIMADO:
FECHA: ________________________________________ 10 minutos
int i = 1 ; j *= 2;
while (i * i < 10) }
{ i++;
int j = i; cout << endl;
while (j * j < 100) }
{ cout << "\n*****\n";
cout << i + j << " ";
En los bucles anidados la variable i , toma los valores 1 , 2 , 3 . En el momento que i toma el valor de 4 , se sale
del bucle ya que 4 * 4 no es menor que 10. En el bucle controlado por la variable j , se observa que j se inicializa
en los valores 1 , 2 , 3 , respectivamente, y en cada iteración se va multiplicando por dos. Así cuando i vale 1 los
valores que toma la variable j son 1 , 2 , 4 , 8 , y cuando toma el valor de 16 se sale del bucle ya que 16 * 16 es
mayor que 100 . Por consiguiente, se escriben los valores de i + j = 2 , 3 , 5 , 9 . Cuando i vale 2 , los valores que
toma la variable j son 2 , 4 , 8 , y cuando toma el valor de 16 se sale del bucle al igual que antes. Por tanto, se
escriben los valores de i + j = 4, 6, 10 . Cuando i vale 3 , la variable j toma los valores 3 , 6 , y cuando toma el
valor 12 se sale del bucle. De esta forma se escriben los valores 6 , 9 . Si se introducen los bucles anteriores en
un programa principal y se ejecuta se obtiene el siguiente resultado:
La inicialización de una estructura puede hacerse solamente cuando es una variable estática o
global. No se puede definir un array de caracteres sin especificar el tamaño y, además, hay
coincidencia de nombres. La mayor parte de los compiladores tampoco permite asignar valores a
estructuras tal y como queda reflejado; hay que hacerlo miembro a miembro. Sería conveniente
hacerlo mejor en la inicialización. Por último, la función escribe tiene como parámetro la
estructura fecha , que no es global, ya que se declara localmente en el programa principal.
PARTE PRACTICA (3,5 PTOS C/U)
EJERCICIO 1:
Escribir una función que reciba como parámetro dos matrices cuadradas de orden n y decida si son
simétricas, si lo son hallar su producto. Una matriz cuadrada de orden n es simétrica si
a[i][j]=a[j][i] para todos los valores de los índices i, j.
SOLUCIÓN
#include <iostream>
using namespace std;
void simetrica (float a[20][20], float b[20][20], int m) {
bool bandera1=true, bandera2=true;
float c[20][20];
EJERCICIO 2:
Escribir un programa para simular una pequeña calculadora que permita leer expresiones enteras
terminadas en el símbolo = y las evalué de izquierda a derecha sin tener en cuenta la prioridad de
los operadores. Ejemplo 4*5-8=12.
Nota. Usar un array de funciones para realizar las operaciones (suma, resta, producto, cociente
resto)
#include <cstdlib>
#include <iostream>
#define maxoperadores 5
using namespace std;
int sumar(int x, int y) {
return x + y;
}
int restar(int x, int y) {
return x - y;
}
int multiplicar(int x, int y) {
return x * y;
}
int dividir(int x, int y) {
return x / y;
}
int resto ( int x, int y) {
return x % y;
}
int main(int argc, char *argv[]) {
char operador, operadores[] = {'+', '-', '*', '/', '%'};
int (*arrayfunc[]) (int, int) = {sumar, restar, multiplicar, dividir, resto};
int i, operando1, operando2;
cout << "******* Calculador de una expresion entera **********.\n";
cout << "Introduzca la expresion pudiendo usar sumar(+), resta(-), multiplicar(+)"<<endl;
cout<<"dividir(/), resto(%) o (=) para finalizar"<<endl<<endl;
cout<<"Expresion: "; cin >> operando1 >> operador;
while (operador != '=') {
cin >> operando2;
for (i = 0; i < maxoperadores; i++)
if (operador == operadores[i])
operando1 = arrayfunc[i](operando1,operando2);
cin>>operador;
}
cout << "valor de la expresion "<< operando1<< endl;
system("PAUSE");
return EXIT_SUCCESS;
}