Você está na página 1de 35

PROGRAMACION DIGITAL (FIEE-UNI)

1) Calcule la edad exacta de una persona en aos, meses y das. 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<ao<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;//(ao de nacimiento,mes,dia),(ao 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 bien
if(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 dias
if(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<<" aos "<<em<<" meses "<<ed<<" dias\n";
}
2) Calcule la fecha del da anterior, teniendo en cuenta los aos 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 nmeros 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
representndolo 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 posicin 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 posicin 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 nmero y elaborar un programa tal que el nmero
ingresado quede incrustado automticamente 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 nmero de
asteriscos se corresponde con el nmero de alumnos, las edades estn entre 15 y
25 aos.
#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 resultara 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 estn 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 mximo y mnimo 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


desempeo del gobierno actual. Realiza el histograma para esta coleccin 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++){
for (int j = i + 1; j < n; j++){

//ordenamos alfabeticamente

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 multiplicacin

c ij

aik

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 mgico 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";
}
}

Você também pode gostar