Вы находитесь на странице: 1из 25

Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales

Ejercicios resueltos para ejecución en Laboratorio de Informática

INSTRUCCIONES PARA ESCRIBIR UN PROGRAMA (PLATAFORMA VISUAL STUDIO VISUAL C++)

Escuela de Sistemas UIS


Tomado del libro Programación y algoritmia de Leonel Parra Pinilla

5.2.2.1 Definición e inicialización (estructura de encabezado)

Formato para la escritura de un programa en este lenguaje:

DIRECTIVAS

Int main( ------- )

Bloque de Instrucciones que solucionan el problema

A continuación se describen tanto DIRECTIVAS como INSTRUCCIONES:

Inicialización o definición, se utiliza para: Definición de directivas de cada solución, Definición de Funciones o
procedimientos, Reservar espacio de memoria, Iniciar valores de variables, Valores de constantes, Tipos de datos y
Comentarios a manera de documentación de la solución.

En la sección de inicialización se utilizan los siguientes enunciados:

DESCRIPCION SEUDOCODIGO INSTRUCCIÓN VISUAL C++

Definición de directivas DIRECTIVAS #include "stdafx.h"


de cada soluciòn. #include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;

Reservar espacio de Separe 100 posiciones de


memoria memoria.(vector de datos) int X[100] (para 100 datos tipo entero)

Para definición de Separe 4 x 5 posiciones de float a[4][5]( (matriz de 4 filas 5 columnas, datos tipo
matrices memoria (matriz de datos ) real )
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Iniciar valores de HAGA var = valor Ejemplo:


variables
int x ,y,w; (x,y,w variables tipo entero)
Asignación de valores donde var es la variable
float z = 120; ( z variable de tipo flotante
utilizada.
valor es la cantidad asignada.
char a,b; (a,b variables tipo carácter)

Ejemplo:
Asignación de valor a HAGA constante = valor
constantes const pi = 3.1416

const ango = 2007

Iniciar valores de HAGA var = valor Ejemplo:


variables
int x ,y,w; (x,y,w variables tipo entero)
Asignación de valores donde var es la variable
utilizada. float z = 120; ( z variable de tipo flotante
valor es la cantidad asignada.
char a,b; (a,b variables tipo carácter)

Ejemplo:
Asignación de valor a HAGA constante = valor
constantes const pi = 3.1416

const ango = 2007

Tipos de datos Tipo ENTERO int x, long int y, short int z

Tipo FLOTANTE float x, double y

char x, char y[30], char z[10][30


Tipo CARACTER
enum meses(enero,febrero, ….)
TipoENUMERADO
typedef struct {
TipoESTRUCTURA }x;

…otros struct x{ ...


}
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Comentarios COMENTARIO marca de /* el comentario que ocupa varias lìneas va entre los
inicio y fin o solo inicio caracteres /* …… */
Documentaciòn de la
soluciòn. // cuando el comentario ocupa una sola lìnea, se colocan
al comienzo // …..

5.2.2.2 Cuerpo (estructura ) de instrucciones que constituyen la solución

Cuerpo se utiliza para: la secuencia de instrucciones o proposiciones paso a paso escritas en seudocódigo de
manera procedimental o en forma estructurada, y que conforman la soluciòn del problema desde la lectura de datos,
el proceso y hasta la salida de resultados..

En la estructura de soluciòn o cuerpo del programa se tienen las siguientes convenciones de seudocòdigo o
proposiciones de programa.

DESCRIPCION SEUDOCODIGO INSTRUCCIÓN VISUAL C++

/* inicia el main() o programa principal que permite


interactuar las funciones o procedimientos que dan la
solución al problema */

int main()
INICIE
{ inicio de la estructura main
definición de variables
… …
Definición del cuerpo o …. Todas las instrucciones soluciòn
la estructura principal de … ….
la soluciòn, es el formato
de escritura. … Console::WriteLine(L"Termina programa");
} fin de la estructura main
TERMINE

INICIE es el { en el lenguaje. A partir de inicie se escriben todas las instrucciones soluciòn del problema. Debe
estar al comienzo del mismo.

Los puntos …..

….. indican las instrucciones de seudocòdigo o lenguaje utilizadas.

TERMINE es el } en el lenguaje. Indica que ha finalizado el conjunto de instrucciones.


Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Puede usarse EMPEZAR y TERMINAR, tambièn como seudocòdigo

Ejemplos:
x = 40; // haga x igual a 40
HAGA var = valor y = y + (x/z + 4); // calcule y con esa fòrmula

Console::ReadLine(Console::x:10:2);
Lee el valor de x con 2 decimales
cin>>x; Lee el valor de x
Instrucciones de
secuencia: Se utilizan scanf(%d,x); Lee el valor entero de x
para asignar valores, LEA variables read x; Lee el valor de x
calcular fòrmulas,
lectura de datos y salida Console::WriteLine(L"Seudocodigo");
de resultados Imprime el letrero Seudocodigo
cout<<"Seudocodigo";
Imprime el letrero Seudocodigo
IMPRIMA variables
Console::Write(Console::x:10:2);
Imprime x en la misma lìnea
cout<<x; Imprime x en la misma lìnea

Console::WriteLine(Console::x:10:2");
Imprime x en nueva lìnea de salida
cout<<"\n"<<x ;
Imprime x en una nueva lìnea

printf(%d,x); Imprime el valor entero de x


print x ; Imprime x

Instrucciones de decisión o CONTINUE continue; sigue el mismo


de control: proceso
PARAR break; detiene el proceso
Sirven para tomar una
acciòn de continuar, exit; termina el proceso
SALIR
detener, o terminar un
proceso o programa. getch(); espera tecla para
PAUSA seguir

Para que dependiendo de SI (condiciòn) if(c>=n){ // if simple; si es verdadera


una condiciòn verdadera o x = x + 2;
falsa se ejecuten las clave=1;
Inicie
òrdenes respectivas. }
….
….
Termine
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

if(a==n){ // if compuesta; es verdadera o falsa la condiciòn


SI (condición) y = y/3;
x=x + y;
D.O.M. (de otro modo) Inicie ...
…. }
….
Termine
else {
D.O.M. y= y/2;
x=x-y;
Inicie clave= 0;
…. ...
…. ...
Termine }

EN CASO DE (variable)
HAGA, ( instrucción
switch(var) ) es una .
instrucción de selección
múltiple, que transfiere la
ejecución de acuerdo al valor switch( var o expresión )
Para usar en caso de tener
de la variable: si vale 1 hace
varias fórmulas o distintas {
la estructura del caso 1: si
actividades a realizar
vale 2 hace la estructura del
dependiendo del valor de case 1: {
caso 2: y asì sucesivamente
una variable o expresión ...
dependiendo del valor de la
variable hace el caso ...
respectivo; en caso que el }
valor de la variable sea case 2: {
diferente a los valores ...
considerados 1, 2, 3, … n, ...
entonces ejecuta la estructura }
del D.O.M ò default. Si el . . .
D:O:M no se usa, y el valor case n: {
de la variable no está en los ...
casos, se presenta una ...
inconsistencia, pues con ese }
valor no se podrá ejecutar
ningún caso. default {
No solo puede ser evaluaciòn ...
de una variable , sino puede ...
ser una expresión que al }
evaluarse, transfiera la
ejecución a la estructura }
establecida segùn el caso.
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

PARA var = val_inic, for(j=1; j<=10; j=j+1)


hasta val_fin , haga
Instrucciones de { donde: var = variable j
Repetición; Se utilizan Inicie …. val_inic = valor inicial de var j=1
cuando es necesario …. val_fin = valor final de var j<=10
repetir un proceso varias ….. …. incremento j=j+1
veces sin condiciòn
termine ...
}

REPITA
do
inicie
{
Para repetir un proceso ...
con condiciòn de hacer ...
hasta que se cumpla la
...
condiciòn ...
Termine ( hasta
condición ) }while(condiciòn);

HACER MIENTRAS
(condiciòn)
while (condiciòn
Inicie
{
...
Y para hacer repetición ...
mientras se este
...
cumpliendo la condiciòn ...
Termine
}

Escuela de Sistemas UIS


Tomado del libro Programacion y algoritmia de Leonel Parra Pinilla
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

SOLUCION DE PROBLEMAS ESCRITOS COMO PROGRAMAS EN VISUAL C++

Escuela de Sistemas UIS


Tomado del libro Programacion y algoritmia de Leonel Parra Pinilla

Enunciado 1
Hacer la tabla de multilpicar del 5 con 10 productoss.
Pertinencia: Aplicación de la aritmética relacionada con los operadores y variables
que establecen expresiones aritméticas.
Análisis
Se debe hacer una tabla de multiplicar, la del 5 ; se requiere iniciar el multiplicando
L en 1, hacer el producto cada vez, aumentando L en 1, repitiendo este proceso hasta
llegar al final de los 10 productos .
Código
#include "stdafx.h" // grupo de
#include <iostream> // directivas
using namespace System; // necesarias para
using namespace std; // compilacion
int main(array<System::String ^> ^args)
{int L,p; // definición variables del programa
Console::Clear;
Console::WriteLine(L"Tabla del 5 con 10 productos");
L=1;
do{ //do para repetir 10 veces
p=L*5;
cout<<L<<" * 5 = "<<p; //imprimir cada producto
L=L+1;
}while( L<=10); //fin del repetidor 10 veces
getch()
}

Enunciado 2
Dado un número N mayor que 1, hacer un programa que haga las tablas de multiplicar
desde 1 hasta el número N; cada tabla con 20 productos.
Pertinencia: Aplicación de la aritmética relacionada con los operadores y variables
que establecen expresiones aritméticas.
Análisis
Se deben hacer N tablas de multiplicar, la del 1, del 2, del 3,… , la del N, se requiere
iniciar con la tabla t = 1, para cada tabla iniciar el multiplicando m en 1, hacer el
producto por el respectivo t, aumentando m en 1, multiplicar por t cada vez hasta
llegar al final de los 20 productos; aumentar t en 1 ( t=2), repetir el proceso anterior
hasta hacer la tabla t =n.
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>
using namespace System;
using namespace std;
int main(array<System::String ^> ^args)
{int n,t,m,p;
Console::WriteLine(L"Tablas de 1 a N con 20 productos");
cout<<"Tecle n (numero de tablas) = a ";
cin>>n;
for(t=1;t<=n;t=t+1) // hacer c/u de las n tablas
{cout<<" Tabla del "<<t<<" con 20 productos"<<endl;
for(m=1;m<=20;m=m+1) // cada multiplicando
{p=m*t;
cout<<m<<" * "<<t<<" = "<<p<<endl;
} // fin del for m 20 productos de cada tabla
cout<<" Pulse tecla para seguir";
getch();
Console::Clear(); // ver cada tabla por pantalla
} // fin del for t tablas del 1 al n
getch();
}

Enunciado 3
Hacer un diagrama y algoritmo para la obtención de las raíces de la ecuación
cuadrática. Tome los valores a, b, c, como los coeficientes de la ecuación aX2 + bX +
c = 0.
Pertinencia: Aplicación de la aritmética relacionada con los operadores y variables
que establecen las expresiones aritméticas.
Análisis
Evaluando los valores a, b, c en la ecuación se define si existen raíces reales o
imaginarias. Si al evaluar el discriminante b2 – 4 * a * c el resultado es > = 0 entonces
existen dos raíces reales X1 y X2, en caso contrario existirán raíces imaginarias.
Observaciones
Se puede ampliar la solución para n ecuaciones cuadráticas, considerando cada
ecuación con coeficientes mayores, menores o iguales a cero.
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
#include<math.h>; // librería de funciones matemáticas
using namespace System;
using namespace std;
int main(array<System::String ^> ^args)
{float a,b,c,x1,x2,r,t;
Console::WriteLine(L"Solución ecuación de segundo orden");
cout<<"\n Tecle coeficiente a = ";
cin>>a;
cout<<"\n Tecle coeficiente b = ";
cin>>b;
cout<<"\n Tecle coeficiente c = ";
cin>>c;
r = b*b - 4*a*c; // calcular discriminante
if(r>=0) // la raíz esta en el campo de los reales
{
t=sqrt(r); // raíz cuadrada del discriminante
x1 = (b*b + t)/2*a; // dos raíces + - según fórmula
x2 = (b*b - t)/2*a;
cout<<"\n Raíz X1 = "<<x1<<"\n Raíz X2 = "<<x2;
}
else {
cout<<"\n Ecuación tiene raíces imaginarias ";
};

Enunciado 4
Hacer un programa que lea un vector A de n elementos y que diga cuál es el mayor y el
menor y en que posición se encuentra.
Pertinencia: Aplicación de los operadores de relación (comparación) para determinar
condiciones especiales de los datos.
Análisis
Conocer n, el número de datos que contendrá el vector, asignar cada dato al vector A, y
mediante comparación uno a uno de los elementos del vector determinar cual es el
mayor y el menor.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

using namespace System;


using namespace std;
int main(array<System::String ^> ^args)
{int A[100],i,n,p1,p2,may,men; // definición de variables, Vector A de hasta 100 datos
Console::WriteLine(L"Hallar el mayor y menor elemento de un ");
Console::WriteLine(L"Vector A de n elementos, indicando la ");
Console::WriteLine(L"posición que tienen en el Vector. ");
cout<<"\n Teclee el número de datos n = ";
cin>>n;
for(i=1;i<=n;i=i+1) // Lectura del Vector A de n elementos
{cout<<"Dato "<<i<<" = ";
cin>>A[i];
}
may=A[1]; //Se supone el primer dato como mayor y menor
men=A[1];
p1=1;
p2=1;
for(i=2;i<=n;i=i+1) // Hallar mayor y menor al tiempo.
{if(A[i]>may)
{may=A[i];
p1=i; // Guardar la posición del mayor
}
else{
if(A[i]<men)
{men=A[i];
p2=i; // Guardar la posición del menor
}
}
} // fin del for i, para comparar todos
cout<<"El mayor es "<<may<<" y esta en la posición "<<p1<<endl;
cout<<"El menor es "<<men<<" y esta en la posición "<<p2<<endl;
getch(); // parada temporal hasta pulsar tecla (visualizar la solución)
}
Observaciones
Inicialmente se asume que el primer elemento es tanto el mayor como el menor.
Modificar el programa suponiendo el primero como mayor y el último como menor.
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Enunciado 5
Hacer el programa que lea un vector A de n elementos. Estos elementos son números
enteros y positivos. Debe crear dos nuevos vectores, B y C, de modo tal que en el
vector B queden todos los números impares, y en el vector C todos los múltiplos de 3.
Al final debe imprimir los tres vectores.
Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de vectores.
Análisis
Conociendo la dimensión del vector A se asignan cada uno de los valores que lo
componen. Luego se crea el vector B donde estarán contenidos los números impares
del vector A y un tercer vector C en el cual se encontrarán los números múltiplos de 3.
En caso de que no existan elementos para los vectores B ó C estos se mostrarán vacíos.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>
using namespace System;
using namespace std;
int main()
{int A[100],B[100],C[100],i,n,j,k,d; // def de variables, Vector A,B,C de hasta100 datos
cout<<"\n Tecle el numero de datos n = ";
cin>>n;
for(i=1;i<=n;i=i+1) // Lectura del Vector A de n elementos
{cout<<"Dato "<<i<<" = ";
cin>>A[i];
}
j=0; // j = Subíndice del Vector B (dice cuántos impares hay)
k=0; // k = Subíndice del vector C (cuántos múltiplos de tres)
for(i=1;i<=n;i=i+1) // Repetidor para analizar c/u de los datos del Vector A
{
d=int(A[i]/2); // tomar parte entera
d=d*2;
if(A[i]!=d) // Prueba de si A[i], el dato, es par o impar
{j=j+1;
B[j]=A[i]; // el dato fue impar ===> guardarlo en el Vector B
}
d=int(A[i]/3); // tomar parte entera
d=d*3;
if(A[i]==d) // Prueba de si A[i], el dato, es múltiplo de tres
{k=k+1;
C[k]=A[i]; // dato fue múltiplo de tres ===> guardarlo en Vector C
}
} // fin del for i, para comparar todos los n datos

// Impresión de los tres Vectores c/u en el mismo renglón


Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

cout<<" A[] = "; // Imprimir el Vector A de n elementos

for(i=1;i<=n;i=i+1)
{
cout<<A[i]<<" "; // imprime A[] uno por uno, separado por un espacio
}

cout<<"\n B[] = "; // Imprimir el Vector B de j elementos


for(i=1;i<=j;i=i+1)
{
cout<<B[i]<<" "; // imprime B[] uno por uno, separado por un espacio
}

cout<<"\n C[] = "; // Imprimir el Vector C de k elementos


for(i=1;i<=k;i=i+1)
{
cout<<C[i]<<" "; // imprime C[] uno por uno, separado por un espacio
}

getch(); // parada temporal hasta pulsar tecla (visualizar la solución)


}
Observaciones
Como no se conoce el crecimiento de los vectores B y C, ni de que tamaño quedarán,
se utilizan 2 variables j y k que se inicializan en cero, y sirven como contadores y como
subíndices de los 2 vectores.

Enunciado 6
Hacer un programa que toma N datos, con los cuales forma 2 vectores cada uno de 100
datos. El primero con los datos pares y el segundo con los impares. Si los N datos no
alcanzan para llenar cada vector de 100 datos, complete el vector de pares con el
número 2, y el de impares con el número 1. Llame I el vector de impares y P el vector
de pares.
Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de vectores.
Análisis
Conociendo el valor de n que define la cantidad de datos ya sean pares o impares, se
crean 2 vectores P e I de pares e impares respectivamente. Cada vector debe tener 100
datos, si los definidos en n no alcanzan para completarlos, estos vectores se completan
con 2 si es el vector de pares y con 1 si es el de impares.
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main(array<System::String ^> ^args)
{
float x,p[1000], i[1000]; // separar espacio n = hasta 1000 datos
int n,y,a,b,k,pr;
Console::WriteLine(L"Programa para vector P de pares, y vector I de impares");
Console::Write(L"Tecle el valor de n (nro de datos) que desea = ");
cin>>n;+1;
a=0; // subíndice para cada par que aparece
b=0; // subíndice para cada impar
for(k=1;k<=100;k=k+1)
{
p[k]=2; // se llenan los dos vectores pares con 2 impares con 1
i[k]=1; // vectores de 100 datos como dice el enunciado
}
// proceso de lectura de los n datos x, y decidir si cada dato x es par
// o impar y hacer el vector respectivo ( p ó i )
for(k=1;k<=n;k=k+1) // hasta n datos
{
cout<<"\n x = ";
cin>>x; // teclear c/u de los n datos
y=int(x/2); // para probar si es par o impar el dato x
pr=2*y;
if(x==pr) // x es par ==> hace vector p
{
a=a+1;
p[a]=x;
}
else { // x es impar ==> hace el vector i
b=b+1;
i[b]=x;
}
} //termina el for k para analizar los n datos x

// proceso para imprimir los dos vectores de 100 datos


// no importa que n nro de taos x sea menor que 100 puesto
// que se completaron con 2 y 1 respectivamente
cout<<"\n Vector p[] de pares ";
for(k=1;k<=100;k=k+1)
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

{
cout<<p[k]<<" "; // impresión sobre la misma línea, separados por espacio
}getch();

cout<<"\n Vector i[] de impares ";


for(k=1;k<=100;k=k+1)
{
cout<<i[k]<<" "; // impresión sobre la misma línea separados por espacio
}
getch(); // pulsar tecla, para ver resultados (detiene la pantalla esperando tecla)

cout<<"\n Vector P[] pares Vector i[] impares";


for(k=1;k<=100;k=k+1)
{
cout<<"\n "<<p[k]<<" "<<i[k]; // impresión línea por línea abajo
// de los dos vectores en cada línea
getch(); // pulsar tecla, para ver resultados ( detiene la pantalla esperando tecla)
}
getch();
}
Observaciones
Primero se llena el vector de pares con 2 y el de impares con 1. Luego se remplaza la
respectiva posición con el par o impar leído.

Enunciado 7
Hacer el programa que lea una matriz A de 10 filas y 20 columnas. Los elementos son
números enteros positivos. Crear e imprimir 2 vectores así: un vector B que contenga
los números pares de la matriz y un vector C que contenga los impares.
Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de matrices y
vectores.
Análisis
Para crear los vectores B y C, se empieza llenando cada una de las posiciones de la
matriz A, se compara si el dato es par o impar y se asignan a su respectivo vector. Si no
se encuentran para llenar uno de los vectores, este se muestra vacío.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>
using namespace System;
using namespace std;
int main()
{int A[10][20],B[200],C[200],i,j,k,L,d; // variables, Matriz A, Vector B, C de 200 datos
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

// Lectura de la matriz A. c/u de las 10 filas con 20 datos


// Nota: para prueba se tomo matriz de 3 filas por 4 columnas
// debe teclear c/u de los 4 datos separados por un espacio y
// pulsar enter para la nueva fila (son 3 filas c/u con 4 columnas (datos)
for(i=1;i<=3;i=i+1) // aquí sería ==> hasta 10 filas como el enunciado
{cout<<"\n Fila "<<i<<" ===> ";
for(j=1;j<=4;j=j+1) // aquí seria ==> hasta 20 columnas como el enunciado
{cin>>A[i][j];
}
}
j=0; // j = Subíndice del Vector B (datos pares de la matriz A)
L=0; // L = Subíndice del vector C (datos impares de la matriz A)
for(i=1;i<=3;i=i+1) // Repetidor para analizar c/u de los datos de la matriz A
{
for(k=1;k<=4;k=k+1)
{d=int(A[i][k]/2); // tomar parte entera
d=d*2;
if(A[i][k]==d) { // Prueba de si el dato A[i][k], es par o impar
j=j+1;
B[j]=A[i][k]; // el dato fue par ===> guardarlo en el Vector B
}
else {
L=L+1;
C[L]=A[i][k]; // dato fue impar ===> guardarlo en Vector C
}
} // fin del for K, para las columnas de la matriz A
} // Fin del for i, para las filas de A

// Impresión de los dos Vectores c/u en el mismo renglón


cout<<"\n B[ ] = "; // Imprimir el Vector B de j datos pares
for(i=1;i<=j;i=i+1)
{
cout<<B[i]<<" "; // imprime B[ ] uno por uno, separado por un espacio
}
cout<<"\n C[ ] = "; // Imprimir el Vector C de L datos impares
for(i=1;i<=L;i=i+1)
{
cout<<C[i]<<" "; // imprime C[ ] uno por uno, separado por un espacio
}
getch(); // parada temporal hasta pulsar tecla (visualizar la solución)
}
Observaciones
Ingresar valores enteros positivos, sean pares o impares para formar cada uno de los
vectores. La matriz siempre será de 10 * 20
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Enunciado 8
Hacer el programa que lea una matriz A de m filas y n columnas. Calcular e imprimir
la suma de cada una de sus filas, y cada una de sus columnas, junto con la palabra fila o
columna correspondientemente.
Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de
operaciones con matrices.
Análisis
Determinar la dimensión de la matriz, ingresar cada uno de los valores que conforman
filas y columnas en dicha matriz. Se suman las filas y se obtiene el resultado y luego se
suman las columnas y se obtiene el resultado. Finalmente se muestra la suma de cada
fila y cada columna.
Código
#include "stdafx.h"
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main()
{int A[10][10],m,n,i,j; // definicion de variables, Matriz A de hasta 10x10 elementos
float sf,sc;
// Se lee el orden de la matriz n x m
Console::Write(L" Numero de filas de la matriz n = ");
cin>>n;
Console::Write(L" Numero de columnas m = ");
cin>>m;
// se lee la matriz A de orden n x m
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas
{for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m columnas
{
cout<<"\n dato A["<<i<<"]["<<j<<"] = ";
cin>>A[i][j];
}

// Proceso para calcular la suma de cada fila


for(i=1;i<=n;i=i+1) // i subindice indica la fila
{sf=0; // antes de sumar cada elemento de la fila
for(j=1;j<=m;j=j+1) // j subindice indica la respectiva columna
{
sf=sf+A[i][j]; // suma cada elemento de la respectiva fila i
}
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

cout<<"\nSuma de la fila "<<i<<" = "<<sf;


cout<<"\n"; // saltar a nueva linea para la siguiente fila
}
// Proceso para calcular la suma de cada columna
for(i=1;i<=n;i=i+1) // i subindice indica la columna
{sc=0; // antes de sumar cada elemento de la columna
for(j=1;j<=m;j=j+1) // j subindice indica la respectiva fila
{
sc=sc+A[j][i]; // suma cada elemento de la respectiva columna i
}
cout<<"\nSuma de la columna "<<i<<" = "<<sc;
cout<<"\n"; // saltar a nueva linea para la siguiente columna
}
getch(); // para ver el resultado hasta pulsar tecla
}
Observaciones
Como m no es necesariamente igual a n, se puede hacer una matriz de cualquier
dimensión.

Enunciado 9
Haga un programa que construya e imprima una matriz identidad orden N.
Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de
operaciones con matrices.
Análisis
Determinar el orden de la matriz, que siempre será de n * n. La diagonal de la matriz se
llena con el valor 1 y las demás posiciones de la matriz con el valor 0, formando así la
matriz identidad.
Código
include "stdafx.h"
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main()
{int A[10][10],i,j,n; // definicion de variables, Matriz A de hasta 10x10 elementos
// No se lee la matriz identidad de orden N; sino que se hace la matriz.
// Matriz de orden n, quiere decir matriz cuadrada de orden n (n x n )
// NOTA: 1a forma de hacer el programa.
Console::Write(L" orden de la matriz identidad que desea n = ");
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

cin>>n;
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas
{for(j=1;j<=n;j=j+1) // aqui seria ==> hasta n ( n x n)
{
if(i==j) // unos en la diagonal principal
{
A[i][j]=1;
}
else{
A[i][j]=0; // 0 todos los demas elementos
}
}
}

// Proceso para imprimir la matriz a de orden n


for(i=1;i<=n;i=i+1) // i subindice indica la fila
{
for(j=1;j<=n;j=j+1) // j subindice indica la respectiva columna
{
cout<<" "<<A[i][j]; // cada elemento de la respectiva fila
} // de la matriz separado por espacio
cout<<"\n"; // saltar a nueva linea para la siguiente fila
}
getch(); // para ver el resultado hasta pulsar tecla
}
Observaciones
Como m no es necesariamente igual a n, se puede hacer una matriz de cualquier
dimensión.

Enunciado 10
Haga un programa que construya la siguiente matriz
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999

Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de matrices.


Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Análisis
Teniendo en cuenta que la matriz tiene la dimensión establecida, 9 * 9, se llena la
matriz con los valores propuestos en el enunciado mediante un ciclo de repetición.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main()
{int a[9][9];// definicion de Matrices a de 9x9
int i,j; // definicion de subindice i, j enteros
// Proceso para construir la matriz de la figura 1
for(i=1;i<=9;i=i+1) // aqui varia segun las filas (aqui 9)
{for(j=1;j<=9;j=j+1) // varia segun las colunbas (aqui 9)
{a[i][j]=i; // c/elemento igual al valor de la fila
} //termina for j de columnas
} // termina for i de filas
// Proceso par imprimir la matriz a (figura 1)
cout<<"La matriz a de la figura 1 es:"<<endl;
for(i=1;i<=9;i=i+1) // imprimir c/u de las 9 filas
{for(j=1;j<=9;j=j+1) // 9 columnas
{
cout<<" "<<a[i][j]; //imprime cada elemento de la respectiva fila
} //separado por un espacio
cout<<"\n"; // para cambiar a nueva linea de impresion en la patalla
}
cout<<"\n Termina programa";
getch();
}
Observaciones
El llenado de la matriz se realiza primero por filas, hasta completar la dimensión de la
matriz.
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Enunciado 11
Haga un programa que construya la siguiente matriz
111111111
122222221
123333321
123444321
123454321
123444321
123333321
122222221
111111111

Pertinencia: Aplicación de la aritmética relacionada con el uso y manejo de matrices.


Análisis
Teniendo en cuenta que la matriz tiene la dimensión establecida, 9 * 9, se llena con los
valores propuestos en el enunciado mediante varios ciclos de repetición, teniendo en
cuenta que el valor 1 debe quedar en la primera y última fila, así como en la primera y
última columna; y así sucesivamente incrementando las primeras filas y columnas, y
decrementando la posición de las últimas filas y columnas para los demás valores (de 1
a 5) hasta obtener la matriz deseada.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main()
{int a[9][9]; // definicion de Matrices a de 9x9
int x,i,j,k; // definicion de variables tipo entero
// Proceso para construir la matriz de la figura 2.
// En este proceso se llena toda la matriz con 1, luego se superpone el 2 en
// las filas y columnas necesarias, luego el 3, el 4 y finalmente se
// acomoda el 5 ( manejo de subindices )
for(x=1;x<=5;x=x+1) // aqui varia segun el caso(figura 2 tiene del 1 al 5)
{ // x= 1,2,3,4,5 para llenar a con 1,2,3,4,5
k=10-x; // para llenar elementos interiores
for(i=x;i<=k;i=i+1) // varia segun las columnas (aqui 9)
{
for(j=x;j<=k;j=j+1) // 9 columnas
{
a[i][j]=x; // llena toda con el 1, luego el 2, 3, 4 y 5
// finalmente (aqui hace la figura 2)
} // termina for j de columnas
} //termina for i de filas
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

} // termina for x de numeros 1,2,3,4,5

// Proceso par imprimir la matriz a (figura 2)


cout<<"La matriz a de la figura 2 es:"<<endl;
for(i=1;i<=9;i=i+1) // imprimir c/u de las 9 filas
{for(j=1;j<=9;j=j+1) // 9 columnas
{
cout<<" "<<a[i][j]; //imprime cada elemento de la respectiva fila
} //separado por un espacio
cout<<"\n"; // para cambiar a nueva linea de impresion en la patalla
}
cout<<"\n Termina programa";
getch();
}
Observaciones
El llenado de la matriz se realiza llenando primero toda la matriz con el valor de 1.
Luego se superpone el valor 2 en las filas y columnas necesarias, luego el valor 3, el
valor 4 y finalmente se acomoda el valor 5.

Enunciado 12
Haga un programa para hallar el producto de dos matrices. Es condición indispensable
que A(n x m) * B(k x l) = C(n x l). Siendo k = m.
Pertinencia: Aplicación de la aritmética relacionada con los operadores y variables en
el cálculo de matrices.
Análisis
Definir la dimensión de la matriz A y B con sus respectivos elementos, es preciso
determinar que k = m para realizar el producto entre las dos matrices, si se cumple esta
condición se realizan las operaciones aritméticas necesarias que componen el producto
entre matrices, determinando así el valor de las posiciones de la matriz C.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main()
{int a[10][10],b[10][10],c[10][10];// definicion de Matrices a, b, c, hasta 10x10 elementos
int i,j,n,m,k,l,x;
// Se lee el orden de la matriz a ( n x m )
Console::Write(L" Numero de filas de la matriz a n = "); cin>>n;
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

Console::Write(L" Numero de columnas m = "); cin>>m;


// Se lee el orden de la matriz b ( k x l )
Console::Write(L" Numero de filas de la matriz b k = "); cin>>k;
Console::Write(L" Numero de columnas l = ");cin>>l;
/* Proceso para calcular el producto de dos matrices a y b. El producto es
posible solo si (m) numero de columnas de la matriz que premultiplica (a),
es igual al numero de filas (k) de la matriz (b) que posmultiplica.
Se verifica si m=k ==> cumplen la condicion anterior, y se pueden multiplicar,
siendo el resultado la matriz c de orden nxl.
*/
if(m==k){ // si se pueden muiltiplicar, se leen las dos matrices
cout<<"\nTeclear datos de la matriz a";
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas para a
{for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m columnas
{
cout<<"\n dato a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
}
// se lee la matriz b de orden k x l
cout<<"\nTeclear datos de la matriz b";
for(i=1;i<=k;i=i+1) // aqui seria ==> hasta k filas
{for(j=1;j<=l;j=j+1) // aqui seria ==> hasta l columnas
{
cout<<"\n dato b["<<i<<"]["<<j<<"] = ";
cin>>b[i][j];
}
}
// inicia proceso para producto de axb
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas
{for(j=1;j<=l;j=j+1) // aqui seria ==> hasta l columnas
{
c[i][j]=0; // para acumular cada elemento de c
for(x=1;x<=m;x=x+1)
{
c[i][j] = c[i][j] + a[i][x]* b[x][j];
}// cada elemento de c es igual Suma del producto
// de los elementos de la fila de a por los de la
// columna de b
}
}
// Proceso par imprimir la matriz suma c
cout<<"La matriz c producto de a x b es: "<<endl;
for(i=1;i<=n;i=i+1) // imprimir c/u de las n filas
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

{for(j=1;j<=l;j=j+1) // l columnas
{
cout<<" "<<c[i][j]; //imprime cada elemento de la respectiva fila
} //separado por un espacio
cout<<"\n"; // para cambiar a nueva linea de impresion en la patalla
}
}// cierre del if
else{ // no se pueden multiplicar (diferente columnas de a con filas de b))
cout<<"\nNo se pueden Multiplicar; matrices de distinto orden";
}
cout<<"\n Termina programa";
getch();
}
Observaciones
Para comprobar que se puede realizar el producto entre la matriz A(n x m) y B( k x l),
es preciso de terminar que k = m garantizando así el producto entre las dos matrices,
mostrando resultado en una matriz C(n x l).

Enunciado 13
Hacer un programa para calcular la matriz suma de dos matrices A y B.
Recuerde: la suma de matrices se efectúa entre matrices de igual orden.
Pertinencia: Aplicación de la aritmética relacionada con los operadores y variables en
el cálculo de matrices.
Análisis
Definir la dimensión de la matriz A y B con sus respectivos elementos, es preciso
determinar que la dimensión de las matrices debe ser igual, si se cumple esta condición
se realiza la operación aritmética necesaria que compone la suma entre matrices,
determinando así el valor de las posiciones de la matriz C.
Código
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;
int main()
{int a[10][10],b[10][10],c[10][10];// definicion de Matrices a, b, c, hasta 10x10 elementos
int i,j,n,m,k,l;
// Se lee el orden de la matriz a ( n x m )
Console::Write(L" Numero de filas de la matriz a n = "); cin>>n;
Console::Write(L" Numero de columnas m = "); cin>>m;
// se lee la matriz a de orden n x m
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas


{for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m columnas
{
cout<<"\n dato a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
}
// Se lee el orden de la matriz b ( k x l )
Console::Write(L" Numero de filas de la matriz b k = "); cin>>k;
Console::Write(L" Numero de columnas l = ");cin>>l;
// se lee la matriz b de orden k x l
for(i=1;i<=k;i=i+1) // aqui seria ==> hasta k filas
{for(j=1;j<=l;j=j+1) // aqui seria ==> hasta l columnas
{
cout<<"\n dato b["<<i<<"]["<<j<<"] = ";
cin>>b[i][j];
}
}
/* Proceso para calcular la suma de los dos matrices a y b
La suma de dos matrices a y b es otra matriz c (c = a + b)
Primero se verifica si son del mismo orden, de lo contrario
no se pueden sumar
*/
if(n==k){
if(m==l){// si se pueden sumar (son del mismo orden)
// Proceso para la suma de dos matrices
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n, o k filas
{for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m, o l columnas
{
c[i][j] = a[i][j]+ b[i][j]; //Suma elemento a elemento por fila
}
}
// Proceso par imprimir la matriz suma c
cout<<"La matriz c suma de a + b es: "<<endl;
for(i=1;i<=n;i=i+1) // imprimir c/u de las n filas
{for(j=1;j<=m;j=j+1) // m columnas
{
cout<<" "<<c[i][j]; //imprime cada elemento de la respectiva fila
} //separado por un espacio
cout<<"\n"; // para cambiar a nueva linea de impresion en la patalla
}
}// del if interno
else{ // del if interno (no se pueden sumar(igual filas pero diferentes columnas))
cout<<"\nNo se pueden sumar matrices de distinto orden";
Escuela de Sistemas UIS – Leonel Parra Pinilla Estructuras Computacionales
Ejercicios resueltos para ejecución en Laboratorio de Informática

//getch();break; // romper proceso para salir


}
}// del 1er if
else{// del 1er if (no se pueden sumar(diferentes filas))
cout<<"\nNo se pueden sumar matrices de distinto orden";
//getch();break; // romper proceso para salir
}
cout<<" Termina programa";
getch();
}
Observaciones
Para comprobar que se puede realizar la suma entre la matriz A(n x m) y B( k x l), es
preciso de terminar que k = n y l = m garantizando así la suma entre las dos matrices.

TOMADO DEL LIBRO PROGRAMACION Y ALGORITMIA DE LEONEL PARRA PINILLA


ESCUELA DE SISTEMAS UIS
TOMADO DEL LIBRO PROGRAMACION Y ALGORITMIA DE LEONEL PARRA PINILLA

Вам также может понравиться