Você está na página 1de 27

Escuela de Sistemas UIS Leonel Parra Pinilla Estructuras Computacionales Ejercicios

resueltos para ejecucin en Laboratorio de Informtica

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


Escuela de Sistemas UIS
Tomado del libro Programacion y algoritmia de Leonel Parra Pinilla

5.2.2.1 Definicin e inicializacin (estructura de encabezado)


Formato para la escritura de un programa en este lenguaje:
DIRECTIVAS
Int main( ------- )
{
Bloque de Instrucciones que solucionan el problema
}

A continuacin se describen tanto DIRECTIVAS como INSTRUCCIONES:


Inicializacin o definicin, se utiliza para: Definicin de directivas de cada solucin, Definicin de Funciones o
procedimientos, Reservar espacio de memoria, Iniciar valores de variables, Valores de constantes, Tipos de datos y
Comentarios a manera de documentacin de la solucin.
En la seccin de inicializacin se utilizan los siguientes enunciados:
DESCRIPCION
Definicin de directivas
de cada solucin.

Reservar espacio de
memoria

SEUDOCODIGO
DIRECTIVAS

Separe 100
posiciones de
memoria.(vector de
datos)

Para definicin de
matrices

Separe 4 x 5
posiciones de
memoria (matriz de
datos )

Iniciar valores de
variables

HAGA var = valor

INSTRUCCIN VISUAL C++


#include "stdafx.h"
#include "iostream"
#include<conio.h>;
using namespace System;
using namespace std;

int X[100] (para 100 datos tipo entero)


float a[4][5]( (matriz de 4 filas 5 columnas, datos
tipo
real )

Ejemplo:
int x ,y,w; (x,y,w variables tipo entero)

Asignacin de valores

donde var es la
variable utilizada.
valor es la cantidad
asignada.

float z = 120; ( z variable de tipo flotante


char a,b; (a,b variables tipo carcter)

Ejemplo:
Asignacin de valor a
constantes

HAGA constante =
valor

const pi = 3.1416
const ango = 2007

Iniciar valores de
variables

HAGA var = valor

Asignacin de valores

donde var es la
variable utilizada.
valor es la cantidad
asignada.

Asignacin de valor a
constantes

Ejemplo:
int x ,y,w; (x,y,w variables tipo entero)

HAGA constante =
valor

float z = 120; ( z variable de tipo flotante


char a,b; (a,b variables tipo carcter)

Ejemplo:
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

Tipo CARACTER
Tipo
ENUMERADO
Tipo
ESTRUCTURA
otros

Comentarios
Documentacin
de la solucin.

COMENTARIO
marca de inicio y fin
o solo inicio

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


enum meses(enero,febrero, .)
typedef struct {
}x;
struct x{

...
}

/* el comentario que ocupa varias lneas va entre los


caracteres /* */
// cuando el comentario ocupa una sola lnea, se
colocan al comienzo // ..

5.2.2.2 Cuerpo (estructura ) de instrucciones que constituyen la solucin


Cuerpo se utiliza para: la secuencia de instrucciones o proposiciones paso a paso escritas en seudocdigo de manera
procedimental o en forma estructurada, y que conforman la solucin del problema desde la lectura de datos, el proceso y
hasta la salida de resultados..
En la estructura de solucin o cuerpo del programa se tienen las siguientes convenciones de seudocdigo o proposiciones
de programa.
DESCRIPCION

SEUDOCODIGO

INSTRUCCIN VISUAL C++

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


interactuar las funciones o procedimientos que dan la
solucin al problema */
INICIE
Definicin del cuerpo o la
estructura principal de la
solucin, es el formato de
escritura.

int main()
{
inicio de la estructura main
definicin de variables

. Todas las instrucciones solucin


.
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 solucin del problema. Debe estar al
comienzo del mismo.
Los puntos ..
.. indican las instrucciones de seudocdigo o lenguaje utilizadas.
TERMINE es el } en el lenguaje. Indica que ha finalizado el conjunto de instrucciones.
Puede usarse EMPEZAR y TERMINAR, tambin como seudocdigo

HAGA var =
valor

Instrucciones de
secuencia: Se
utilizan para
asignar valores,
calcular
frmulas, lectura
de datos y salida
de resultados

Ejemplos:
x = 40; // haga x igual a 40
y = y + (x/z + 4); // calcule y con esa frmula
Console::ReadLine(Console::x:10:2);
Lee el valor de x con 2 decimales
cin>>x; Lee el valor de x
scanf(%d,x); Lee el valor entero de x
read x; Lee el valor de x

LEA variables
Console::WriteLine(L"Seudocodigo");
Imprime el letrero Seudocodigo
cout<<"Seudocodigo";
Imprime el letrero Seudocodigo
IMPRIMA variables

Console::Write(Console::x:10:2);
Imprime x en la misma lnea
cout<<x; Imprime x en la misma lnea

Console::WriteLine(Console::x:10:2");
Imprime x en nueva lnea de salida
cout<<"\n"<<x ;
Imprime x en una nueva lnea
printf(%d,x); Imprime el valor entero de x
print x ; Imprime x

Instrucciones de
decisin o de
control:

CONTINUE

Sirven para tomar


una accin de
continuar, detener,
o terminar un
proceso o
programa.

SALIR

Para que
dependiendo de
una condicin
verdadera o falsa
se ejecuten las
rdenes
respectivas.

SI (condicin)

PARAR

continue; sigue el mismo


proceso
break;
detiene el proceso
exit;

termina el proceso

getch();

espera tecla para


seguir

PAUSA

Inicie
.
.
Termine

if(c>=n){ // if simple; si es verdadera


x = x + 2;
clave=1;
}

SI (condicin)

D.O.M. (de otro


modo)

Inicie
.
.
Termine

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


condicin
y = y/3;
x=x + y;
...
}

D.O.M.
else {
y= y/2;
x=x-y;
clave= 0;
...
...
}

Inicie
.
.
Termine

EN CASO DE (variable)
HAGA, ( instruccin
switch(var) ) es una
instruccin de seleccin
mltiple, que transfiere la
ejecucin de acuerdo al valor de
la variable: si vale 1 hace la
estructura del caso 1: si vale 2
hace la estructura del caso 2: y
as sucesivamente dependiendo

switch( var o expresin )

del valor de la variable hace el


caso respectivo; en caso que el
Para usar en caso valor de la variable sea diferente
a los valores considerados 1, 2,
de tener varias
frmulas o distintas 3, n, entonces ejecuta la
estructura del D.O.M default.
actividades a
Si el D:O:M no se usa, y el
realizar
valor de la variable no est en
dependiendo del
los casos, se presenta una
valor de una
inconsistencia, pues con ese
variable o
valor no se podr ejecutar
expresin
ningun caso.
No solo puede ser evaluacin de
una variable , sino puede ser una
expresin que al evaluarse,
transfiera la ejecucin a la
estructura establecida segn el
caso.

{
case 1: {
...
...
}
case 2: {
...
...
}
...
case n: {
...
...
}
default {
...
...
}
}

Instrucciones de
Repeticin; Se utilizan
cuando es necesario
repetir un proceso varias
veces sin condicin

PARA var =
val_inic,
hasta
val_fin , haga

for(j=1; j<=10; j=j+1)


{
.
.
.

Inicie
..

...
}

termine

REPITA

Para repetir un proceso con


condicin de hacer hasta
que se cumpla la condicin

do

inicie

...

...

...

...

Termine ( hasta
condicin )
HACER
MIENTRAS
(condicin)

}while(condicin);

while (condicin
{

Y para hacer
repeticin
mientras se este
cumpliendo la
condicin

donde: var = variable j


val_inic = valor inicial de var j=1
val_fin = valor final de var j<=10
incremento j=j+1

Inicie
...
...
...
...
}
Termine

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: Aplicacin de la aritmtica relacionada con los operadores y
variables que establecen expresiones aritmticas.
Anlisis
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 .
Cdigo
#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;
// definicin 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 nmero N mayor que 1, hacer un programa que haga las tablas de
multiplicar desde 1 hasta el nmero N; cada tabla con 20 productos.
Pertinencia: Aplicacin de la aritmtica relacionada con los operadores y
variables que establecen expresiones aritmticas.
Anlisis
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.
Cdigo
#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 obtencin de las races de la ecuacin
cuadrtica. Tome los valores a, b, c, como los coeficientes de la ecuacin
aX2 + bX + c = 0.
Pertinencia: Aplicacin de la aritmtica relacionada con los operadores y
variables que establecen las expresiones aritmticas.
Anlisis
Evaluando los valores a, b, c en la ecuacin se define si existen races reales
o imaginarias. Si al evaluar el discriminante b2 4 * a * c el resultado es > =
0 entonces existen dos races reales X1 y X2, en caso contrario existirn
races imaginarias.
Observaciones
Se puede ampliar la solucin para n ecuaciones cuadrticas, considerando
cada ecuacin con coeficientes mayores, menores o iguales a cero.

Cdigo
#include "stdafx.h"
#include "iostream"
#include<conio.h>;
#include<math.h>; // librera de funciones matemticas
using namespace System;
using namespace std;
int main(array<System::String ^> ^args)
{float a,b,c,x1,x2,r,t;
Console::WriteLine(L"Solucin ecuacin 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 raz esta en el campo de los reales
{
t=sqrt(r);
// raz cuadrada del discriminante
x1 = (b*b + t)/2*a; // dos races + - segn frmula
x2 = (b*b - t)/2*a;
cout<<"\n Raz X1 = "<<x1<<"\n Raz X2 = "<<x2;
}
else {
cout<<"\n Ecuacin tiene races imaginarias ";
};

Enunciado 4
Hacer un programa que lea un vector A de n elementos y que diga cul es el
mayor y el menor y en que posicin se encuentra.
Pertinencia: Aplicacin de los operadores de relacin (comparacin) para
determinar condiciones especiales de los datos.
Anlisis
Conocer n, el nmero de datos que contendr el vector, asignar cada dato al
vector A, y mediante comparacin uno a uno de los elementos del vector
determinar cual es el mayor y el menor.
Cdigo
#include "stdafx.h"
#include "iostream"
#include<conio.h>
using namespace System;
using namespace std;
int main(array<System::String ^> ^args)
{int A[100],i,n,p1,p2,may,men; // definicin 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"posicin que tienen en el Vector. ");
cout<<"\n Teclee el nmero 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 posicin del mayor
}
else{
if(A[i]<men)
{men=A[i];
p2=i; // Guardar la posicin del menor
}
}
} // fin del for i, para comparar todos
cout<<"El mayor es "<<may<<" y esta en la posicin "<<p1<<endl;
cout<<"El menor es "<<men<<" y esta en la posicin "<<p2<<endl;
getch(); // parada temporal hasta pulsar tecla (visualizar la solucin)
}
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.

Enunciado 5
Hacer el programa que lea un vector A de n elementos. Estos elementos son
nmeros enteros y positivos. Debe crear dos nuevos vectores, B y C, de
modo tal que en el vector B queden todos los nmeros impares, y en el
vector C todos los mltiplos de 3. Al final debe imprimir los tres vectores.
Pertinencia: Aplicacin de la aritmtica relacionada con el uso y manejo de
vectores.
Anlisis
Conociendo la dimensin del vector A se asignan cada uno de los valores
que lo componen. Luego se crea el vector B donde estarn contenidos los
nmeros impares del vector A y un tercer vector C en el cual se encontrarn
los nmeros mltiplos de 3. En caso de que no existan elementos para los
vectores B C estos se mostrarn vacos.
Cdigo
#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 = Subndice del Vector B (dice cuntos impares hay)
k=0;
// k = Subndice del vector C (cuntos mltiplos 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 mltiplo de tres
{k=k+1;
C[k]=A[i]; // dato fue mltiplo de tres ===> guardarlo en Vector C
}
} // fin del for i, para comparar todos los n datos
// Impresin de los tres Vectores c/u en el mismo rengln
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 solucin)
}
Observaciones
Como no se conoce el crecimiento de los vectores B y C, ni de que tamao
quedarn, se utilizan 2 variables j y k que se inicializan en cero, y sirven
como contadores y como subndices 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 nmero 2, y el de impares con el nmero
1. Llame I el vector de impares y P el vector de pares.
Pertinencia: Aplicacin de la aritmtica relacionada con el uso y manejo de
vectores.
Anlisis
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.

Cdigo
#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;
// subndice para cada par que aparece
b=0;
// subndice 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)
{
cout<<p[k]<<" "; // impresin sobre la misma lnea, separados por espacio
}getch();
cout<<"\n Vector i[] de impares ";
for(k=1;k<=100;k=k+1)
{
cout<<i[k]<<" "; // impresin sobre la misma lnea 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]; // impresin lnea por lnea abajo
// de los dos vectores en cada lnea
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 posicin con el par o impar ledo.

Enunciado 7
Hacer el programa que lea una matriz A de 10 filas y 20 columnas. Los
elementos son nmeros enteros positivos. Crear e imprimir 2 vectores as: un
vector B que contenga los nmeros pares de la matriz y un vector C que
contenga los impares.
Pertinencia: Aplicacin de la aritmtica relacionada con el uso y manejo de
matrices y vectores.
Anlisis
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 vaco.
Cdigo
#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
// 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 sera ==> 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 = Subndice del Vector B (datos pares de la matriz A)
L=0;
// L = Subndice 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
// Impresin de los dos Vectores c/u en el mismo rengln
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 solucin)
}
Observaciones
Ingresar valores enteros positivos, sean pares o impares para formar cada
uno de los vectores. La matriz siempre ser de 10 * 20

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: Aplicacin de la aritmtica relacionada con el uso y manejo de
operaciones con matrices.
Anlisis
Determinar la dimensin 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.
Cdigo
#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
}
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 dimensin.

Enunciado 9
Haga un programa que construya e imprima una matriz identidad orden N.
Pertinencia: Aplicacin de la aritmtica relacionada con el uso y manejo de
operaciones con matrices.
Anlisis
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 dems posiciones de la matriz con el
valor 0, formando as la matriz identidad.
Cdigo
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 = ");
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 dimensin.

Enunciado 10
Haga un programa que construya la siguiente matriz
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999
Pertinencia: Aplicacin de la aritmtica relacionada con el uso y manejo de
matrices.
Anlisis
Teniendo en cuenta que la matriz tiene la dimensin establecida, 9 * 9, se
llena la matriz con los valores propuestos en el enunciado mediante un ciclo
de repeticin.
Cdigo
#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
dimensin de la matriz.

Enunciado 11
Haga un programa que construya la siguiente matriz
111111111
122222221
123333321
123444321
123454321
123444321
123333321
122222221
111111111
Pertinencia: Aplicacin de la aritmtica relacionada con el uso y manejo de
matrices.
Anlisis
Teniendo en cuenta que la matriz tiene la dimensin establecida, 9 * 9, se
llena con los valores propuestos en el enunciado mediante varios ciclos de
repeticin, 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 posicin
de las ltimas filas y columnas para los dems valores (de 1 a 5) hasta
obtener la matriz deseada.
Cdigo
#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
} // 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 condicin
indispensable que A(n x m) * B(k x l) = C(n x l). Siendo k = m.
Pertinencia: Aplicacin de la aritmtica relacionada con los operadores y
variables en el clculo de matrices.
Anlisis
Definir la dimensin 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 condicin se realizan las operaciones aritmticas necesarias
que componen el producto entre matrices, determinando as el valor de las
posiciones de la matriz C.
Cdigo
#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;
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
{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 efecta entre matrices de igual orden.
Pertinencia: Aplicacin de la aritmtica relacionada con los operadores y
variables en el clculo de matrices.
Anlisis
Definir la dimensin de la matriz A y B con sus respectivos elementos, es
preciso determinar que la dimensin de las matrices debe ser igual, si se
cumple esta condicin se realiza la operacin aritmtica necesaria que
compone la suma entre matrices, determinando as el valor de las posiciones
de la matriz C.
Cdigo
#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
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";
//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

Você também pode gostar