35
PROGRAMACION DIGITAL (FIEE-UNI) 1) Calcule la edad exacta de una persona en años, meses y días. El programa debe pedir ingresar la fecha de nacimiento y la fecha actual, los cuales deben estar validados, caso contrario debe pedir reingresar datos(999<año<10000). El programa usa 2 funciones: fecha valida: calcular edad: sol: #include<fstream.h> #include <conio.h> bool validaFecha(int,int,int); void calculaEdad(int,int,int,int,int,int); void main(){ int an,mn,dn,aa,ma,da;//(año de nacimiento,mes,dia),(año actual,mes,dia) cout<<"ingrese fecha de nacimiento:\n"; cin>>dn>>mn>>an; while(!validaFecha(dn,mn,an)){ cout<<"fecha no valida, vuelva a ingrear\n";cin>>dn>>mn>>an; } cout<<"fecha de nacimiento es: "<<dn<<"/"<<mn<<"/"<<an<<"\n\n"; cout<<"ingrese fecha actual:\n"; cin>>da>>ma>>aa; while(!validaFecha(da,ma,aa) || aa<an){ cout<<"fecha no valida, vuelva a ingrear\n";cin>>da>>ma>>aa; } cout<<"fecha actual es: "<<da<<"/"<<ma<<"/"<<aa<<"\n"; calculaEdad(dn,mn,an,da,ma,aa); getch(); } bool validaFecha(int d,int m,int a){ int dmax,sw=0; if((a<1000 || a>9999) || (m<=0 || m>12))sw=1; switch(m){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: dmax=31;break;

Programacion Digital FIEE-UNI

Embed Size (px)

DESCRIPTION

Programacion Digital FIEE-UNIPROBLEMAS RESUELTOS DE C++

Citation preview

PROGRAMACION DIGITAL (FIEE-UNI)

1) Calcule la edad exacta de una persona en años, meses y días. El programa debe pedir ingresar la fecha de nacimiento y la fecha actual, los cuales deben estar validados, caso contrario debe pedir reingresar datos(999<año<10000). El programa usa 2 funciones:

fecha valida:calcular edad:sol:

#include<fstream.h>#include <conio.h>bool validaFecha(int,int,int);void calculaEdad(int,int,int,int,int,int);void main(){int an,mn,dn,aa,ma,da;//(año de nacimiento,mes,dia),(año actual,mes,dia)cout<<"ingrese fecha de nacimiento:\n";cin>>dn>>mn>>an;while(!validaFecha(dn,mn,an)){cout<<"fecha no valida, vuelva a ingrear\n";cin>>dn>>mn>>an;}cout<<"fecha de nacimiento es: "<<dn<<"/"<<mn<<"/"<<an<<"\n\n";cout<<"ingrese fecha actual:\n";cin>>da>>ma>>aa;while(!validaFecha(da,ma,aa) || aa<an){cout<<"fecha no valida, vuelva a ingrear\n";cin>>da>>ma>>aa;}cout<<"fecha actual es: "<<da<<"/"<<ma<<"/"<<aa<<"\n";calculaEdad(dn,mn,an,da,ma,aa);getch();}bool validaFecha(int d,int m,int a){int dmax,sw=0;if((a<1000 || a>9999) || (m<=0 || m>12))sw=1;switch(m){case 1: case 3: case 5: case 7: case 8: case 10: case 12:dmax=31;break;case 4: case 6: case 9: case 11:dmax=30;break;case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){dmax=29;}else{dmax=28;}break;}

if(d<=0 || d>dmax)sw=1;//si sw=1,la fecha es incorrecta,si sw=0 esta bienif(sw==0){return true;}else{return false;}}void calculaEdad(int d1,int m1,int a1,int d2,int m2,int a2){int ea,em,ed,pd;switch(m2){case 1: case 3: case 5: case 7: case 8: case 10: case 12:pd=31;break;case 4: case 6: case 9: case 11:pd=30;break;case 2:if (a2 % 4 == 0 && a2 % 100 != 0 || a2 % 400 == 0){pd=29;}else{pd=28;}break;}if(d2<d1){ed=d2+pd-d1;m2--;//nos hemos prestado diasif(m2<m1){em=m2+12-m1;a2--;}else{em=m2-m1;}ea=a2-a1;}else{ed=d2-d1;if(m2<m1){em=m2+12-m1;a2--;}else{em=m2-m1;}ea=a2-a1;}cout<<"\nla edad es: "<<ea<<" años "<<em<<" meses "<<ed<<" dias\n";}

2) Calcule la fecha del día anterior, teniendo en cuenta los años bisiestos. Las funciones a usar son:

validaFecha fechaAyer

#include<fstream.h>

#include <conio.h>

bool validaFecha(int,int,int);

void fechaAyer(int,int,int);

void main(){

int aa,ma,da;

cout<<"ingrese fecha actual:\n";

cin>>da>>ma>>aa;

while(!validaFecha(da,ma,aa)){

cout<<"fecha no valida, vuelva a ingrear\n";cin>>da>>ma>>aa;

}

cout<<"fecha actual es: "<<da<<"/"<<ma<<"/"<<aa<<"\n";

fechaAyer(da,ma,aa);

getch();

}

bool validaFecha(int d,int m,int a){

int dmax,sw=0;

if((a<1000 || a>9999)||(m<=0 || m>12))sw=1;

switch(m){

case 1: case 3: case 5: case 7: case 8: case 10: case 12:dmax=31;break;

case 4: case 6: case 9: case 11:dmax=30;break;

case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){

dmax=29;

}

else{

dmax=28;

}break;

}

if(d<=0 || d>dmax)sw=1;

if(sw==0){

return true;

}else{

return false;

}

}

void fechaAyer(int d,int m,int a){

d--;

if(d==0){

m--;

if(m==0){

m=12;d=31;a--;

}

switch(m){

case 4: case 6: case 9: case 11:d=30;break;

case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){

d=29;

}

else{

d=28;

}break;

default:d=31;

}

}

cout<<"\nla fecha de ayer es: "<<d<<"/"<<m<<"/"<<a<<"\n";

}

3) Ingrese un arreglo de enteros. El programa debe colocar los números impares a la izquierda y los pares a la derecha.

#include <iostream.h>

#include <conio.h>

void main(){

int a[80],n,r=0,aux;

cout<<"Ingrese el numero de datos:\n";

cin>>n;

for(int i=0;i<n;i++){

cout << "Ingrese la posicion ["<<i<<"] : ";

cin >> a[i];

}

cout<<"\n";

cout<<"el arreglo es: \n\n";

for(int i=0;i<n;i++){

cout<<a[i]<<"\t";

}

cout<<"\n";

for(int i=0;i<n;i++){

if(a[i]%2==1){

for(int j=i;j>0+r;j--){

aux=a[j-1];

a[j-1]=a[j];

a[j]=aux;

}

r++;

}

}

cout<<"\n";

cout<<"el arreglo final es: \n\n";

for(int i=0;i<n;i++){

cout<<a[i]<<"\t";

}

getch();

}

4) Sea el arreglo: arrayPrincipal[10]={1,2,3,7,4,1,7,1,2,1}, realizar un programa tal que nos indique cuantas veces se repite cada elemento del arreglo representándolo con asteriscos.

#include <iostream.h>

#include <conio.h>

void main(){

int arrayPrincipal[10]={1,2,3,7,4,1,7,1,2,1};

int aux[10];

int pos,size=10,contador;

for(int i=0;i<size;i++){

pos=0;

contador=0;

for(int j=0;j<size;j++){

if(arrayPrincipal[i] != arrayPrincipal[j]){

aux[pos++]=arrayPrincipal[j];

}else{

contador++;

}

}

cout<<"el numero "<<arrayPrincipal[i]<< " se repite: ";

for(int u=0;u<contador;u++){

cout<<"*";

}

cout<<"\n";

size-=contador;

for(int u=0;u<size;u++){

arrayPrincipal[u]=aux[u];

}

i--;

}

getch();

}

5) Ingresar un arreglo con elementos entre 1 y 20 e incrustar un elemento. Se debe ingresar el elemento a incrustar y la posición donde se quiere poner.

#include<fstream.h> //incrusta un element:

#include<conio.h>

#include<stdlib.h>

int main(){

int t[80],n,elemento, posicion;

cout<<"Ingrese el numero de datos:\n";

cin>>n;

for (int i=0;i<8;i++){

t[i]= 1+rand()%(20);

}

cout<<"el arreglo es:\n";

for (int i=0;i<n;i++){

cout<<t[i]<<"\t";

}

cout<<"\n";

do{

cout<<"Posicion donde insertar (de 0 a "<<n-1<<"):\n";

cin>>posicion;

}while(posicion<0 || posicion>n-1);

cout<<"Nuevo elemento:\n";

cin>>elemento;

for (int i=n-1;i>=posicion;i--){

t[i+1]=t[i];

}

t[posicion] =elemento;

cout<<("La tabla queda:\n");

for (int i=0;i<n+1;i++)

cout<<t[i]<<"\t";

getch();

}

6) Ingresar un arreglo con elementos entre 1 y 10 luego eliminar un elemento. Se debe ingresar la posición del elemento a eliminar.

#include<fstream.h> //elimina un elemento

#include<conio.h>

#include<stdlib.h>

int main(){

int t[80],n,pos;

cout<<"ingrese longitud de arreglo:\n";

cin>>n;

for (int i=0;i<n;i++){

t[i]= 1+rand()%(10);

}

cout<<"el arreglo es:\n";

for (int i=0;i<n;i++){

cout<<t[i]<<"\t";

}

cout<<"\n";

do{

cout<<"Posicion a eliminar (de 0 a "<<n-1<<"):\n";

cin>>pos;

}while(pos<0 || pos>n-1);

for (int i=pos;i<n-1;i++){

t[i]=t[i+1];

}

cout<<("El arreglo queda:\n");

for (int i=0;i<n-1;i++){

cout<<t[i]<<"\t";

}

getch();

}

7) Ingresar un arreglo y un número y elaborar un programa tal que el número ingresado quede incrustado automáticamente en el arreglo original de manera que este ordenado de mayor a menor.

#include<fstream.h>//pone automaticamente

#include<conio.h>

#include<stdlib.h>

int main(){

int t[80],n,aux,num,pos,j;

cout<<"ingrese longitud de arreglo:\n";

cin>>n;

cout<<"ingrese cantidad a incrustar:\n";

cin>>num;

for (int i=0;i<n;i++){

cout<<"ingrese el elemento "<<i+1<<": ";

cin>>t[i];

}

cout<<"el arreglo es:\n";

for (int i=0;i<n;i++){

cout<<t[i]<<" ";

}

cout<<"\n";

for(int i=0;i<n;i++){

for(int j=i+1;j<n;j++){

if(t[i]>t[j]){

aux=t[j];

t[j]=t[i];

t[i]=aux;

}

}

}

pos=0;j=0;

while(t[j]<num && j<n){

j++;pos++;

}

for(int i=n-1;i>=pos;i--){

t[i+1]=t[i];

}

t[pos] =num;

cout<<"\n";

for (int i=0;i<n+1;i++)

cout<<t[i]<<" ";

getch();

}

8) Elaborar un programa que elimine los elementos repetidos de un arreglo.

#include<fstream.h> //elimina repeticiones 2doM

#include <conio.h>

void main(){

int a[80],n;

cout<<"Ingrese el numero de datos:\n";

cin>>n;

for(int i=0;i<n;i++){

cout << "Ingrese la posicion ["<<i<<"] : ";

cin >> a[i];

}

cout<<"\n";

cout<<"el arreglo es: \n";

for(int i=0;i<n;i++){

cout<<a[i]<<"\t";

}cout<<"\n";

for(int i=0;i<n;i++){

for(int j=i+1;j<n;j++){

if(a[i]==a[j]){

for(int k=j; k<n-1; k++){

a[k] = a[k+1];

}

n--;j--;

}

}

}

cout<<"el arreglo sin repeticiones es: \n";

for(int i=0;i<n;i++){

cout<<a[i]<<"\t";

}

getch();

}

9) Elaborar un programa tal que al ingresar un arreglo (elementos entre 1 y 50) y calcular el pivote como la semisuma del primer y último elemento, se colocan los elementos menores que el pivote a la izquierda mientras los mayores a la derecha.

#include <iostream.h>//pivote

#include<stdlib.h>

#include <conio.h>

void main(){

int a[80],n,r,aux;

float pivot;

cout<<"Ingrese el numero de datos:\n";

cin>>n;

for(int i=0;i<n;i++){

a[i]= 1+rand()%(49);;

}

cout<<"\n";

cout<<"el arreglo es:\n";

for(int i=0;i<n;i++){

cout<<a[i]<<", ";

}

cout<<"\n";

pivot=1.0*(a[0]+a[n-1])/2;r=0;

for(int i=0;i<n;i++){

if(a[i]<=pivot){

for(int j=i;j>r;j--){

aux=a[j-1];

a[j-1]=a[j];

a[j]=aux;

}

r++;

}

}

cout<<"\n";

cout<<"el pivot es: "<<pivot<<"\n";

cout<<"\nel arreglo final es: \n";

for(int i=0;i<n;i++){

cout<<a[i]<<", ";

}

getch();

}

10) Imprimir un histograma de las edades del curso de MA713, el número de asteriscos se corresponde con el número de alumnos, las edades están entre 15 y 25 años.

#include <conio.h>

#include<stdlib.h>

void main(){

int a[100],f[100],n,u,v,max;

cout<<"Ingrese el numero de datos:\n"; //numero de alumnos

cin>>n;

do{

cout<<"Ingrese rango de datos:\n"; //rango de edades

cin>>u>>v;

if(u>=v || u<0 || v<0)cout<<"orden no valido\n";// u tiene que ser mayor que v

}while(u>=v || u<0 || v<0);

for(int i=u;i<=v;i++)f[i]=0;

for(int j=0;j<n;j++){

a[j]=u+rand()%(v-u+1);

f[a[j]]++;

}

cout<<"\n";

cout<<"el arreglo de frecuencias es: \n\n";

for(int i=u;i<=v;i++){

cout<<""<<i<<":";

for(int j=0;j<f[i];j++){

cout<<"*";

}cout<<"\n";

}

getch();

}

11) Sea el arreglo a={7,11,3,11,17,18}, desarrollar un programa tal que desplace los elementos del arreglo cierta cantidad hacia adelante. Por ejemplo si quiero desplazar en una cantidad 3 resultaría a={11,17,18,7,11,3}.

#include<fstream.h> //desplaza “de” posiciones

#include<conio.h>

#include<stdlib.h>

int main(){

int t[80],ultimo,n,de;

cout<<"ingrese longitud de arreglo:\n";

cin>>n;

cout<<"ingrese cantidad a desplazar:\n";

cin>>de;

for (int i=0;i<n;i++){

t[i]= 1+rand()%(20);

}

cout<<"el arreglo es:\n";

for (int i=0;i<n;i++){

cout<<t[i]<<" ";

}

cout<<"\n";

for(int i=0;i<de;i++ ){

ultimo=t[n-1];

for (int j=n-2;j>=0;j--){

t[j+1]=t[j];

}

t[0]=ultimo;

}

cout<<("\nLa tabla queda:\n");

for (int i=0;i<n;i++)

cout<<t[i]<<" ";

getch();

}

12) Sea cuatro puntos aleatorios en el plano cartesiano. Guardamos las abscisas y ordenadas en dos arreglos X y Y (todos los elementos están entre 1 y 9). Encontrar la mayor distancia generada entre los cuatro puntos e indicar los puntos que la generan.

#include<fstream.h>//problema parcial xs y ys

#include<conio.h>

#include<stdlib.h>

#include <math.h>

void main(){

int x[4],y[4],px,py,k;

float max,d[6];

for(int i=0;i<4;i++){

x[i]=1+rand()%9;

}

cout<<"el arreglo de abscisas es\n";

for(int i=0;i<4;i++)

cout<<x[i]<<"\t";

cout<<"\n\n";

for(int i=0;i<4;i++){

y[i]=1+rand()%9;

}

cout<<"el arreglo de ordenadas es\n";

for(int i=0;i<4;i++)

cout<<y[i]<<"\t";

cout<<"\n\n";

k=0;

for(int i=0;i<3;i++){

for(int j=i+1;j<4;j++){

d[k]=ceil(sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2))*100)/100;

k++;

}

}

cout<<"las distancias son: \n";

for(int i=0;i<k;i++)

cout<<d[i]<<"\t";

cout<<"\n\n";

max=d[0];

for(int i=0;i<k;i++){

if(d[i]>max)

max=d[i];

}

k=0;

for(int i=0;i<3;i++){

for(int j=i+1;j<4;j++){

d[k]=ceil(sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2))*100)/100;

if(d[k]==max){

px=i;py=j;

}

k++;

}

}

cout<<"la mayor distancia es "<<max<<" \n";

cout<<"los puntos x: "<<x[px]<<" y "<<x[py]<<" \n";

cout<<"los puntos y: "<<y[px]<<" y "<<y[py]<<" \n";

getch();

}

13) Dibujar una letra R con asteriscos ingresando el ancho y largo iguales.

#include<fstream.h> // letra R

#include<conio.h>

int main(){

int n;

cout<<"ingrese ancho y largo n:\n";

cin>>n;cout<<"\n";

for(int f=0;f<n;f++){

for(int c=0;c<n;c++){

if(c==0||f==0||(f==n/2 && c>=n/2)||(c==n-1&&f<=n/2)||(c>=n/2&&f==c)){

cout<<"*";

}

else{

cout<<" ";

}

}

cout<<"\n";

}

getch();

}

14) Dibujar la letra K con asteriscos ingresando el ancho y largo iguales.

#include<fstream.h> // letra K

#include<conio.h>

int main(){

int n;

cout<<"ingrese ancho y largo n:\n";

cin>>n;cout<<"\n";

for(int f=0;f<n;f++){

for(int c=0;c<n;c++){

if(c==0||(c>=n/2&&c+f==n-1)||(c>=n/2&&c==f)){

cout<<"*";

}

else{

cout<<" ";

}

}

cout<<"\n";

}

getch();

}

15) Elaborar una tabla de frecuencias al ingresar una cantidad de datos. Encontrar el máximo y mínimo valor, el numero d intervalos y longitud del intervalo.

#include<fstream.h>

#include<conio.h>

#include<math.h>

void ingresavector(int a[100],int &n);

void ordenavector(int a[100], int n, int &mayor, int &menor);

void frecuencias(int a[100], int n, int mayor, int menor);

void imprimevector(int b[100],int n1);

void main(){

int n, a[80],mayor,menor;

ingresavector(a,n);

cout<<"el vector es: \n";

imprimevector(a,n);

ordenavector(a,n,mayor,menor);

frecuencias(a,n,mayor,menor);

getch();

}

void ingresavector(int a[100],int &n){

cout<<"ingrese cantidad de elemntos del vector: ";cin>>n;

while(n<=0 || n>100){

cout << "cantidad no valida, vuelva a ingresar:\n"; cin >> n;

}

for(int i=0;i<n;i++){

cout<<"ingrese el elemento "<<i+1<<": ";

cin>>a[i];

}

cout<<"\n";

}

void ordenavector(int a[100],int n,int &mayor,int &menor){

mayor=menor=a[0];

for(int i=0;i<n;i++){

if(mayor<a[i]){

mayor=a[i];

}

if(menor>a[i]){

menor=a[i];

}

}

cout<<"el mayor elemento es: "<<mayor<<" \n";

cout<<"el menor elemento es: "<<menor<<"\n";

}

void frecuencias(int a[100], int n, int mayor, int menor){

int I[100],S[100],F[100],con;float ni, ti;

ni = 1+3.32*log10(1.0*n); ti =1.0*(mayor-menor) / ni;

if(ni<0.5*(ceil(ni)+floor(ni))){ //redondeamos correctamente

ni=floor(ni);

}else{

ni=ceil(ni);

}

if(ti<0.5*(ceil(ti)+floor(ti))){ //redondeamos correctamente

ti=floor(ti);

}else{

ti=ceil(ti);

}

cout<<"EL numero de intervalos es:"<<ni<<"\n";cout<<"longitud del intervalo es:"<<ti<<"\n";

I[0]=menor;S[0]=menor+ti-1;

for(int i=1;i<ni;i++){

I[i]=S[i-1]+1;S[i]=I[i]+ti-1;

}

for(int i=0;i<ni;i++){

con=0;

for(int j=0;j<n;j++){

if(a[j]>=I[i] && a[j]<=S[i]){

con++;

}

}

F[i]=con;

}

cout<<"La tabla de frecuencias es:\n";

for(int i=0;i<ni;i++){

cout<<"["<<I[i]<<"-"<<S[i]+1<<">"<<"\t"<<F[i]<<"\n";

}

}

void imprimevector(int b[100],int n1){

for(int i=0;i<n1;i++){

cout<<b[i]<<", ";

}

cout<<"\n";

}

16) suponga que se le pide a 20 personas calificar con las letras a b c d y e el desempeño del gobierno actual. Realiza el histograma para esta colección de datos con asteriscos.

Ejemplo: respuestas: c b c a b c d e e a b b d c a c c b d a.

a: 4 a: ****

b:5 b: *****

c: 6 c: ******

d: 3 d: ***

e: 2 e: **

sol:

#include <iostream.h>

#include <conio.h>

void ingresaArreglo(char dato[80], int &n);

void imprimeArreglo(char dato[80], int n);

void histograma(char dato[80], int n);

void main(){

char dato[80];

int n;

ingresaArreglo(dato, n);

cout << "las calificaciones al gobierno son:\n";

imprimeArreglo(dato, n);

cout << "El histograma es:\n";

histograma(dato, n);

getch();

}

void ingresaArreglo(char dato[80], int &n){

cout << "ingrese cantidad de encuestados: "; cin >> n;

while (n <= 0 || n>80){

cout << "cantidad no valida, vuelva a ingresar:\n"; cin >> n;

}

for (int i = 0; i<n; i++){

cout << "opinion " << i + 1 << ": ";

cin >> dato[i];

if(dato[i]<97 || dato[i]>101){

cout<<"valor vo valido, reingrese\n";i--; //si ingresas letras distintas a lo establecido

}

}

cout << "\n";

}

void imprimeArreglo(char dato[80], int n){

for (int i = 0; i<n; i++){

cout << dato[i] << " ";

}

cout << "\n";

}

void histograma(char dato[80], int n){

char aux[80], sw; int pos, con;

for (int i = 0; i < n; i++){ //ordenamos alfabeticamente

for (int j = i + 1; j < n; j++){

if (dato[j] < dato[i]){

sw = dato[i];

dato[i] = dato[j];

dato[j] = sw;

}

}

}

for (int i = 0; i < n; i++){

pos = 0, con = 0;

for (int j = 0; j < n; j++){

if (dato[i] != dato[j]){

aux[pos++] = dato[j];

}

else{

con++;

}

}

cout << "" << dato[i] << ": " << con << "" << "\t" << "" << dato[i] << ": ";

for (int u = 0; u < con; u++){

cout << "*";

}

cout << "\n";

n -= con;

for (int u = 0; u<n; u++){

dato[u] = aux[u];

}

i--;

}

}

17) programa para multiplicar dos matrices validando orden de multiplicación c ij =a ik*bkj

#include<fstream.h>//multiplicacion de matrices #include<conio.h> #include<stdlib.h> void main(){ int A[80][80],B[80][80],C[80][80],fa,ca,fb,cb,suma; do{ cout<<"introduce filas de A:\n"; cin>>fa; cout<<"introduce columnas de A:\n"; cin>>ca; cout<<"introduce filas de B:\n"; cin>>fb; cout<<"introduce columnas de B:\n"; cin>>cb; if(ca!=fb || ca<=0 || fb<=0) cout<<"orden no valido para la multiplicacion\n"; }while(ca!=fb || ca<=0 || fb<=0); for(int i=0;i<fa;i++){ for(int j=0;j<ca;j++){

A[i][j]=1+rand()%(9); } } for(int i=0;i<fb;i++){ for(int j=0;j<cb;j++){ B[i][j]=1+rand()%(20); } } cout<<"\nla matriz A es:\n"; for(int i=0;i<fa;i++){ for(int j=0;j<ca;j++){ cout<<A[i][j]<<"\t"; } cout<<"\n"; } cout<<"\nla matriz B es:\n"; for(int i=0;i<fb;i++){ for(int j=0;j<cb;j++){ cout<<B[i][j]<<"\t"; } cout<<"\n"; } for(int i=0;i<fa;i++){ for(int j=0;j<cb;j++){ suma=0; for(int k=0;k<fb;k++){ suma=suma+A[i][k]*B[k][j]; } C[i][j]=suma; } } cout<<"\nla matriz producto es:\n"; for(int i=0;i<fa;i++){ for(int j=0;j<cb;j++){ cout<<C[i][j]<<"\t"; } cout<<"\n"; } getch(); }

18) Encontrar el programa para un cuadrado mágico de orden impar valido para orden 3,5,7,9,11.

#include <iostream.h>//cuadrado magico

#include<conio.h>

void main(){

int a[100][100],n,i,j,k,inicio,fin,prer,prec;

cout<<"ingrese dimencion de matriz cuadrada:\n";

cin>>n;

while (n%2==0){

cout<<"Debes digitar solo valores impares\n";

cout<<"digite un nuevo valor:\n";

cin>>n;

}

for(i=0;i<n;i++){

for(j=0;j<n;j++){

a[i][j]=0;

}

}

inicio=n/2;

fin=n*n;

a[0][inicio] = 1;

i=0;

j=inicio;

for(k=2;k<=fin;k++){

prer=i;

prec=j;

i--;

if(i<0)

i=n-1;

j--;

if(j<0)

j=n-1;

if(a[i][j]!=0)

{

i=prer;

j=prec;

i++;

if(i>n-1)

i = 0;

a[i][j]=k;

}

else

a[i][j]=k;

}

cout<<"\nel cuadrado magico es:\n";

for(i=0; i<n; i++){

for(j=0; j<n; j++){

cout<<a[i][j]<<"\t";

}

cout<<"\n";

}

getch();

}

19) Desplazar las filas de una matriz hacia abajo (la primera pasara a ser la segunda, la segunda será la tercera, etc., y la última pasara a ser primera).

#include<fstream.h>

#include <conio.h>

#include<stdlib.h>

void ingrezaMatriz(int a[80][80],int &n,int &m);

void desplaza(int a[80][80],int n,int m);

void muestraMatriz(int a[80][80],int n,int m);

void main(){

int a[80][80],n,m;

ingrezaMatriz(a,n,m);

cout<<"la matriz orignal es: \n\n";

muestraMatriz(a,n,m);

desplaza(a,n,m);

cout<<"\nLa nueva matriz es:\n\n";

muestraMatriz(a,n,m);

getch();

}

void ingrezaMatriz(int a[80][80],int &n,int &m){

cout<<"ingrese dimencion:\n";cin>>n>>m;

while(n<2 || m<2){

cout<<"dimencion no valida,reingresa:\n";cin>>n>>m;

}

for (int i=0;i<n;i++){

for (int j=0;j<m;j++){

a[i][j]=1+rand()%(9);

}

}

cout<<"\n";

}

void desplaza(int a[80][80],int n,int m){

int u[80],aux;

for(int j=0;j<m;j++){

u[j]=a[n-1][j];

}

for(int i=n-2;i>=0;i--){

for(int j=0;j<m;j++){

a[i+1][j]=a[i][j];

}

}

for(int j=0;j<m;j++){

a[0][j]=u[j];

}

}

void muestraMatriz(int a[80][80],int n,int m){

for (int i=0;i<n;i++){

for (int j=0;j<m;j++){

cout <<a[i][j]<<"\t";

}

cout << "\n";

}

}

20) Invertir los elementos de la diagonal principal de una matriz cuadrada.

#include<fstream.h>

#include <conio.h>

#include<stdlib.h>

void ingrezaMatriz(int a[80][80],int &n);

void invierte(int a[80][80],int n);

void muestraMatriz(int a[80][80],int n);

void main(){

int a[80][80],n;

ingrezaMatriz(a,n);

cout<<"la matriz orignal es: \n\n";

muestraMatriz(a,n);

invierte(a,n);

cout<<"\nLa nueva matriz es:\n\n";

muestraMatriz(a,n);

getch();

}

void ingrezaMatriz(int a[80][80],int &n){

cout<<"ingrese dimencion:\n";cin>>n;

while(n<2){

cout<<"dimencion no valida,reingresa:\n";cin>>n;

}

for (int i=0;i<n;i++){

for (int j=0;j<n;j++){

a[i][j]=10+rand()%(81);

}

}

cout<<"\n";

}

void invierte(int a[80][80],int n){

int aux;

for (int i=0;i<n/2;i++){

aux=a[i][i];a[i][i]=a[n-1-i][n-1-i];a[n-1-i][n-1-i]=aux;

}

}

void muestraMatriz(int a[80][80],int n){

for (int i=0;i<n;i++){

for (int j=0;j<n;j++){

cout <<a[i][j]<<"\t";

}

cout << "\n\n";

}

}