You are on page 1of 58

Arreglos bidimensionales o matrices

1. 1. Una matriz es un vector de vectores, oconjunto de elementos siempre del mismo


tipo.
2. 2. Cada elemento es una casilla, con posicin:elemento [1:8,a:h]; dependiendo de la
fila y columnadonde encuentren.
3. 3. ELEMENTOS DE LA MATRIZPara identificar los elementos de la matriz, se
utilizan dossubndices: El primero, indica la fila donde se ubica. El segundo,
indica en qu columna est.Por ejemplo: M[2,3]Se refiere al elemento ubicado en la
segunda fila y terceracolumna.
4. 4. LMITES DE LOS SUBNDICES DE LA MATRIZUn array bidimensional,
posee lmites: superior,e inferiorpara su nmero de filas y columnas.De ah
que:B(L1:U1,L2:U2)={B[I,J]}L<-Lmite inferior ; U<-lmite superiorDonde L1<-
I<-U1 L2<-J<-U2Cada elemento B[I,J] es de tipo TEl nmero de elementos de la
fila es B es U2-L2+1 y elnmero de elementos de la columna B ES U1-L1+1; por
elloel nmero de elementos del array es (U2-L2+1)*( U1-L1+1)
5. 5. DECLARACIN DE UNA MATRIZUna matriz se declara usando el siguiente
formato: <TIPO> <NOMBREmatriz> [<N>][<M>] ;Por ejemplo: Se quiere
declarar una matriz con nombremat, de dimensin 15x4 y que pueda almacenar
datos de tipocarcter. char mat [15][4];
6. 6. Por ejemplo, una matriz bidimensional se puede imaginar comouna tabla
bidimensional compuesta de elementos, todos ellos deun mismo tipo de datos
uniforme.jimmy representa una matriz bidimensional de 3 por 5 elementosde tipo
int. La manera de declarar esta matriz en C + + sera: int jimmy [3][5];y, por
ejemplo, la manera de hacer referencia al segundo elementovertical y horizontal en
el cuarto una expresin sera:jimmy[1][3](Recuerde que los ndices comienzan
siempre por cero).
7. 7. ASIGNACIN DIRECTA DE ELEMENTOS DE UN ARREGLO
BIDIMENSIONAL ( Insercin de elementos) <nombre del arreglo> [ndice de
fila][ndice de columna] = valor del elemento;
8. 8. FORMATO DE ASIGNACIN DIRECTA A UNARREGLO
BIDIMENSIONAL (extraccin de elementos) <identificador variable> =<nombre
delarreglo>[ndice de fila][ndice de columna];
9. 9. Dadas las siguientes definiciones de arreglo bidimensional, dibuje un diagrama
de la estructura del arreglo mostrando los ndices respectivos de filas y columnas.
int voltaje[CORRIENTE][RESISTENCIA]; const int CORRIENTE = 26; const
int RESISTENCIA = 1001;Las asignacion directa posibles para la insercin de
unvalor eso:voltaje[2][10] = 20;Observe que este valor de voltaje corresponde a un
valorde corriente de 2 y un valor de resistencia de 10 cuandose usa la ley de Ohm
10. 10. Asignar datos a elementos de una Matriz los enunciados de asignacin directa
para extraer elementos son:volts = voltaje[5][100];En este caso se asigna a un
identificador variable el valordel elemento almacenado en la posicin
fila/columnadentro del arreglo.
11. 11. INICILIZACION DE UNA MATRIZEs posible declarar e inicializar un arreglo
en una misma vez.Por ejemplo: b[2][2]int b[2][2] = { {1, 2}, {3, 4} };Los valores se
agrupan por filas entre corchetes. Por lotanto, 1 y 2 inicializan a b[0][0] y b[0][1] y
3 y 4 inicializan ab[1][0] y b[1][1] Si no hay suficientes inicializadores para una
fila determinada, los elementos se inicializan a 0. Por lo tanto, la declaracin:int
b[2][2] = { {1}, {3, 4} };inicializan a b[0][0] a 1, y b[0][1] a 0, b[1][0] a 3, y b[1][1]
a 4.
12. 12. LECTURA Y ESCRITURA DE ELEMENTOS EN ARREGLOS
BIDIMENSIONALESEs posible usar enunciados cin para insertar elementosen
arreglos bidimensionales y utilizar enunciados coutpara extraer elementos del
arreglo, como los siguientesejemplos: cin >> voltaje[5][20]; cout <<
voltaje[5][20];
13. 13. Ejemplo: Este ejemplo nos presenta el men , en un restaurante:#include
<iostream>using namespace std;#define DIMENSION ((int) (sizeof mst / sizeof mst
[0]))struct St { int orden; char* plato; char* desc;} mst [] = { 1, "Entrada", "Sopa
juliana", 2, "Segundo", "Filete empanado", 3, "Postre ", "Tarta al Whisky",};int
main() { for (int i = 0 ; i < DIMENSION; i++) cout << mst[i].orden << " " <<
mst[i].plato << " " << mst[i].desc << endl; return 0;}
14. 14. CMO RECORRER UNA MATRIZ?Para recorrer una matriz necesitamos dos
bucles anidados. Por ejemplo, sise desea recorrer todos los elementos de la matriz A
por filas, se escribirndos sentencias for anidadas:for i=1: nfilasA % para cada
filafor j=1: ncolsAsentenciasendendTambin es posible recorrer la matriz por
columnas:for j=1: ncolsA % para cada columnafor i=1: nfilasAsentenciasendend
15. 15. ALMACENAMIENTO DE ARRAYS ENMEMORIAEl almacenamiento en
memoria, est dispuesto ensecuencia contigua de modo que cada acceso
debeconvertir la posicin dentro del array en una posicindentro de una lnea.
16. 16. Lee los datos de una matriz 3x4 y muestra en pantalla la suma de los datos de
cada fila#include <iostream>#include <stdlib.h>#include <conio.h>using
namespace std;/*Este programa lee los datos de una matriz 3x4 y muestra en
pantallala suma de los datos de cada fila */int main(){int matriz[3][4];int
arreglo[3];int i,j;//Ingreso de los datosfor (i=0;i<3;i++) { for (j=0;j<4;j++) {
17. 17. cout << "Ingrese el numero entero correspondiente a la posicion ["<<i<<"]
["<<j<<"]: "; cin >> matriz[i][j]; } }//Muestra en pantalla la matriz ingresadacout
<< "nLa matriz que usted ingreso es: nn"; for (i=0;i<3;i++) { for (j=0;j<4;j++) {
cout << matriz[i][j]<<" "; }cout << "n"; }//Suma los datos de cada filafor
(i=0;i<3;i++) { arreglo[i]=0; for (j=0;j<4;j++) { arreglo[i]=arreglo[i]+matriz[i][j]; }
}//Muestra en pantalla los resultadosfor (i=0;i<3;i++) { cout << "nLa suma de los
datos de la fila "<<i<<" es: " << arreglo[i]; }getch();}
18. 18. Operaciones con matrices:Al igual que en matemtica, las operaciones
conmatrices, se ejecutan de la siguiente manera:En teora se hace as (suma):
19. 19. Suma y Resta de Matrices#include <iostream.> #include <stdlib.h> using
namespace std; int operacion(int [][100], int [][100], int [][100], int , int , int, int,
int); int main() { int n,f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100];
cout<<"Presione 1 para Sumar"<<endl<<"Presione 2 para Restar"<<endl<<"
Presione otro numero paraSalir"<<endl; cin>>n; while ((n>0) && (n<3)) { f1=0;
c1=0; f2=0; c2=0; while ((f1<1) || (f1>101)) { cout<<"Introduce las filas de la
matriz 1 [1-100]: "; cin>>f1; } while ((c1<1) || (c1>101)) { cout<<"Introduce las
columnas de la matriz 1 [1-100]: "; cin>>c1; } for (f=0; f<=f1; f++) { for (c=0;
c<=c1; c++) { cout<<"m1["<<f<<"]["<<c<<"] = "; cin>>m1[f][c]; } }
20. 20. while ((f2<1) || (f2>101)) { cout<<endl<<"Introduce las filas de la matriz 2 [1-
100]: "; cin>>f2; } while ((c2<1) || (c2>101)) { cout<<"Introduce las columnas de la
matriz 2 [1-100]: "; cin>>c2; } for (f=0; f<=f2; f++) { for (c=0; c<=c2; c++) {
cout<<"m2["<<f<<"]["<<c<<"] = "; cin>>m2[f][c]; }
}r=operacion(m1,m2,mr,n,f1,f2,c1,c2); if (r==-1) cout<<endl<<"No se pudo
realizar la operacion; las matrices no son del mismo tamanio"<<endl; else { for
(f=0; f<=f2; f++) { for (c=0; c<=c2; c++) cout<<" "<<mr[f][c]<<" "; cout<<endl; }
} cout<<endl<<"1 -- Sumar"<<endl<<"2 -- Restar"<<endl<<"Otro numero --
Salir"<<endl; cin>>n; } cout<<endl<<"Fin de programa..."<<endl;
system("PAUSE"); return 0; }
21. 21. int operacion(int m1[][100], int m2[][100], int mr[][100], int n, int f1, int f2,int
c1, int c2) { int f,c; if ((f1==f2) && (c1==c2)) //si si se pueden sumar/restar { if
(n==1) //suma { for (f=0; f<=f1; f++) { for (c=0; c<=c1; c++) mr[f][c] = m1[f][c] +
m2[f][c]; } } else //resta { for (f=0; f<=f1; f++) { for (c=0; c<=c1; c++) mr[f][c] =
m1[f][c] - m2[f][c]; } } return 1; } else {return -1;} }

Recomendado

Cmo gestionar mejor tu tiempo

Arrays Bidimensionales y Multidimensionales - Carlos Correa

Carlitos Correa Jr.

17 arreglos bidimensionales java

Clara Patricia Avella Ibaez

Arreglos unidimensionales y bidimensionales

Guillermo Manuel

Arreglos Bidimensionales - Java - NetBeans

Daniel Gmez

Aplicacin de arreglos bidimensionales

marigelcontreras

Arreglos en C

Ronny Parra

Arreglos c++

Johnny Paucar

Ejercicios de matrices y vectores en c++

Diego Maxdj Chicaiza

Arreglos en pseudocodigo 01

Emerson Emet

English
Espaol
Portugus
Franais
Deutsch

Acerca de
Desarrolladores y API
Blog
Condiciones
Privacidad
Copyright
Atencin al cliente

LinkedIn Corporation 2017

Pues como viene siendo habitual os dejo la solucin de los mismos.

Realice un programa en C:

1. Que rellene un array con los 100 primeros nmeros enteros y los muestre en pantalla
en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,tabla[100];

for (x=1;x<=100;x++)
{
tabla[x]=x;
}

for (x=1;x<=100;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

2. Que rellene un array con los 100 primeros nmeros enteros y los muestre en pantalla
en orden descendente.

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,tabla[100];

for (x=1;x<=100;x++)
{
tabla[x]=x;
}

for (x=100;x>=1;x--)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

3. Que rellene un array con los nmeros primos comprendidos entre 1 y 100 y los
muestre en pantalla en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,z,i,tabla[100];

i=0;
for (x=1;x<=100;x++)
{
cont=0;
for (z=1;z<=x;z++)
{
if (x%z==0)
{
cont++;
}
}

if (cont==2 || z==1 || z==0)


{
tabla[i]=x;
i++;
}

}
for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

4. Que rellene un array con los nmeros pares comprendidos entre 1 y 100 y los muestre
en pantalla en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,z,i,tabla[100];

i=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==0)
{
tabla[i]=x;
i++;
}
}

for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

5. Que rellene un array con los nmeros impares comprendidos entre 1 y 100 y los
muestre en pantalla en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,z,i,tabla[100];

i=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==1)
{
tabla[i]=x;
i++;
}
}

for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

6. Que lea 10 nmeros por teclado, los almacene en un array y muestre la suma, resta,
multiplicacin y divisin de todos.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,tabla[10];
int sum,res,mul,div;

for (x=0;x<10;x++)
{
printf("Introduzca nmero\n");
scanf("%d",&tabla[x]);
}

sum=tabla[0];
res=tabla[0];
mul=tabla[0];
div=tabla[0];

for (x=1;x<10;x++)
{
sum=sum+tabla[x];
res=res-tabla[x];
mul=mul*tabla[x];
div=div/tabla[x];
}

printf("Suma: %d\n",sum);
printf("Resta: %d\n",res);
printf("Multiplicacin: %d\n",mul);
printf("Divisin: %d\n",div);

system("PAUSE");
return 0;
}

7. Que lea 10 nmeros por teclado, los almacene en un array y los ordene de forma
ascendente.

#include <stdio.h>
#include <stdlib.h>

int main()
{
float aux, numeros[10];
int i,j,n=10;

for (i=0;i<n;i++){
printf("Escriba un nmero");
scanf("%f",&numeros[i]);
}

for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(numeros[i]<numeros[j])
{
aux=numeros[i];
numeros[i]=numeros[j];
numeros[j]=aux;
}
}
}

for (i=n-1;i>=0;i--){
printf("%f\n",numeros[i]);
}
system("PAUSE");
return 0;
}

8. Que lea 10 nmeros por teclado, 5 para un array y 5 para otro array distinto. Mostrar
los 10 nmeros en pantalla mediante un solo array.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int aux, numeros1[5],numeros2[5],numeros3[10];
int i,j;

for (i=0;i<5;i++){
printf("Escriba un nmero");
scanf("%d",&numeros1[i]);
}

for (i=0;i<5;i++){
printf("Escriba un nmero");
scanf("%d",&numeros2[i]);
}

for(i=0;i<5;i++)
{
numeros3[i]=numeros1[i];
}

for(i=0;i<5;i++)
{
numeros3[5+i]=numeros2[i];
}

for (i=0;i<10;i++){
printf("%d\n",numeros3[i]);
}

system("PAUSE");
return 0;
}

9. Que lea 5 nmeros por teclado, los copie a otro array multiplicados por 2 y muestre
el segundo array.
#include <stdio.h>
#include <stdlib.h>

int main()
{
int aux, numeros1[5],numeros2[5];
int i,j;

for (i=0;i<5;i++){
printf("Escriba un nmero");
scanf("%d",&numeros1[i]);
}

for(i=0;i<5;i++)
{
numeros2[i]=numeros1[i]*2;
}

for (i=0;i<5;i++){
printf("%d\n",numeros2[i]);
}

system("PAUSE");
return 0;
}

10. Que lea 5 nmeros por teclado, los copie a otro array multiplicados por 2 y los
muestre todos ordenados usando un tercer array.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int aux, numeros1[5],numeros2[5],numeros3[10];
int i,j;

for (i=0;i<5;i++){
printf("Escriba un nmero");
scanf("%d",&numeros1[i]);
}

for(i=0;i<5;i++)
{
numeros2[i]=numeros1[i]*2;
}
for(i=0;i<5;i++)
{
numeros3[i]=numeros1[i];
}

for(i=0;i<5;i++)
{
numeros3[5+i]=numeros2[i];
}

for (i=0;i<10;i++){
printf("%d\n",numeros3[i]);
}

system("PAUSE");
return 0;
}

11. Que rellene un array con los 100 primeros nmeros pares y muestre su suma.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,sum,i,tabla[100];

i=0;
sum=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==0)
{
tabla[i]=x;
i++;
}
}

for (x=0;x<i;x++)
{
sum=sum+tabla[x];
}

printf("%d\n",sum);
system("PAUSE");
return 0;
}

12. Que lea 10 nmeros por teclado, los almacene en un array y muestre la media.

#include <stdio.h>
#include <stdlib.h>

int main()
{
float sum, numeros1[10];
int i;

sum=0;
for (i=0;i<10;i++){
printf("Escriba un nmero");
scanf("%f",&numeros1[i]);
}

for(i=0;i<10;i++)
{
sum=sum+numeros1[i];
}

printf("%f\n",sum/10);

system("PAUSE");
return 0;
}

13. Que mediante un array almacene nmeros tanto positivos como negativos y los
muestre ordenados.

#include <stdio.h>
#include <stdlib.h>

int main()
{
float aux, numeros[10];
int i,j,n=10;

for (i=0;i<n;i++){
printf("Escriba un nmero");
scanf("%f",&numeros[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(numeros[i]<numeros[j])
{
aux=numeros[i];
numeros[i]=numeros[j];
numeros[j]=aux;
}
}
}

for (i=n-1;i>=0;i--){
printf("%f\n",numeros[i]);
}

system("PAUSE");
return 0;
}

14. Que rellene un array con 20 nmeros y luego busque un nmero concreto.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int i,x=0,vector[20], n=20, dato, centro,inf=0,sup=n-1;

for (i=0;i<20;i++){
printf("Escriba un nmero");
scanf("%d",&vector[i]);
}

printf("Escriba el nmero a buscar");


scanf("%d",&dato);

while(inf<=sup)
{
centro=(sup+inf)/2;
if (vector[centro]==dato)
{
printf("Existe\n");
x=1;
break;
}
else if(dato < vector [centro] )
{
sup=centro-1;
}
else
{
inf=centro+1;
}
}

if (x==0)
{
printf("No existe\n");
}

system("PAUSE");
return 0;

15. Que pinte un tablero de ajedrez, los peones con la letra P, las torres con T, los
caballos con C, los alfiles con A, el rey con R y la reina con M.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y;

for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
{
//peones
if (x==1 || x==6)
{
printf("P");
}
//torres
else if ((x==0 && y==0) ||
(x==7 && y==0) ||
(x==0 && y==7) ||
(x==7 && y==7)
)
{
printf("T");
}
//caballos
else if ((x==0 && y==1) ||
(x==7 && y==1) ||
(x==0 && y==6) ||
(x==7 && y==6)
)
{
printf("C");
}
//alfiles
else if ((x==0 && y==2) ||
(x==7 && y==2) ||
(x==0 && y==5) ||
(x==7 && y==5)
)
{
printf("A");
}
//reina
else if ((x==0 && y==3) ||
(x==7 && y==3)
)
{
printf("M");
}
//rey
else if ((x==0 && y==4) ||
(x==7 && y==4)
)
{
printf("R");
}
else
{
printf(" ");
}
}
printf("\n");
}

system("PAUSE");
return 0;

}
16. Que muestre los primeros 100 nmeros de izquierda a derecha usando un array de
dos dimensiones.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y, numeros[10][10];

for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
numeros[x][y]=(x*10)+1+y;
}

for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",numeros[x][y]);
}
printf("\n");
}

system("PAUSE");
return 0;

17. Que muestre los primeros 100 nmeros de izquierda a derecha usando un array de
dos dimensiones, la ltima fila a mostrar la suma de sus respectivas columnas.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,sum, numeros[11][10];

for (y=0;y<10;y++)
{
sum=0;
for (x=0;x<10;x++)
{
numeros[x][y]=(x*10)+1+y;
sum=sum+numeros[x][y];
}
numeros[10][y]=sum;
}

for (x=0;x<11;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",numeros[x][y]);
}
printf("\n");
}

system("PAUSE");
return 0;
}

18. Que rellene un array de dos dimensiones con nmeros pares, lo pinte y despus que
pida una posicin X,Y y mostrar el nmero correspondiente.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,num=2, numeros[3][3];

for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num=num*2;
}
}

printf("Introduzca coordenada x: ");


scanf("%d",&x);
printf("Introduzca coordenada y: ");
scanf("%d",&y);
printf("El nmero es: %d\n",numeros[x][y]);

system("PAUSE");
return 0;
}

19. Que rellene una matriz de 3x3 y muestre su traspuesta (la traspuesta se consigue
intercambiando filas por columnas y viceversa).

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,num=0, numeros[4][4];

for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num++;
}
}

printf("El array original es: \n\n\n");

for(x = 0;x < 3;x++)


{
for(y = 0;y < 3;y++)
{
printf(" %d ", numeros[x][y]);
}
printf("\n\n\n");
}

printf("La traspuesta es: \n\n\n");

for(x = 0;x < 3;x++)


{
for(y = 0;y < 3;y++)
{
printf(" %d ", numeros[y][x]);
}
printf("\n\n\n");
}

system("PAUSE");
return 0;
}

20. Que lea una cadena y la muestre al revs.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int indice,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0;x < 50;x++)


{
if (frase[x]=='\0')
{
indice=x;
break;
}
}

printf("La frase al reves es: \n\n");

for(x = indice-1;x >=0;x--)


{
printf("%c",frase[x]);
}

printf("\n\n");

system("PAUSE");
return 0;
}

21. Que lea una cadena y diga cuantas vocales hay.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{

int sum=0,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0;x < 50;x++)


{
switch (frase[x])
{
case 'a':
sum++;
break;
case 'e':
sum++;
break;
case 'i':
sum++;
break;
case 'o':
sum++;
break;
case 'u':
sum++;
break;
default:
break;
}

printf("\n\nEn la frase hay %d vocales\n\n",sum);

printf("\n\n");

system("PAUSE");
return 0;
}

22. Que lea una cadena y diga cuantas maysculas hay.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int sum=0,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0;x < 50;x++)


{
if (frase[x]>=65 && frase[x]<=90)
{
sum++;
}
}

printf("\n\nEn la frase hay %d maysculas\n\n",sum);

printf("\n\n");

system("PAUSE");
return 0;
}

23. Que lea una cadena y la encripte sumando 3 al cdigo ASCII de cada carcter.
Mostrar por pantalla.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{
int sum=0,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0; x < 50;x++)


{
if (frase[x]!='\0')
{
frase[x]=frase[x]+3;
}
}

printf("\n\nLa nueva frase es:\n\n",sum);


printf("\n\n%s\n\n",frase);
printf("\n\n");

system("PAUSE");
return 0;
}

24. Que gestione los datos de stock de una tienda de comestibles, la informacin a
recoger ser: nombre del producto, precio, cantidad en stock. La tienda dispone de 10
productos distintos. El programa debe ser capaz de:

a. Dar de alta un producto nuevo.


b. Buscar un producto por su nombre.
c. Modificar el stock y precio de un producto dado.

#include <stdio.h>
#include <stdlib.h>

struct producto {
char nombre[50];
float precio;
int cantidad;
};

int main(int argc, char *argv[])


{
struct producto prod,productos[10];

int x,opcion=1;

for (x=0;x<10;x++)
{
strcpy(productos[x].nombre,"X");
productos[x].precio=0;
productos[x].cantidad=0;
}

while ((opcion==1 || opcion==2 || opcion==3) && (opcion!=4))


{

printf("1- Alta de producto\n");


printf("2- Buscar por nombre\n");
printf("3- Modificar stock y precio\n");
printf("4- Salir\n");
printf("Introduzca una opcin: ");
scanf("%d",&opcion);

if (opcion==1)
{
printf("Introduzca un nombre: ");
gets(prod.nombre);
gets(prod.nombre);
printf("Introduzca un precio: ");
scanf("%f",&prod.precio);
printf("Introduzca un stock: ");
scanf("%d",&prod.cantidad);

for(x = 9; x >=0; x--)


{
if (x!=0)
{
strcpy(productos[x].nombre,productos[x-1].nombre);
productos[x].precio=productos[x-1].precio;
productos[x].cantidad=productos[x-1].cantidad;
}
else
{
strcpy(productos[x].nombre,prod.nombre);
productos[x].precio=prod.precio;
productos[x].cantidad=prod.cantidad;
}
}
printf("\nProducto creado. \n\n");
}
else if (opcion==2)
{
printf("Introduzca un nombre: ");
gets(prod.nombre);
gets(prod.nombre);

for(x = 0; x < 10;x++)


{

if (strcmp(productos[x].nombre,prod.nombre)==0)
{
printf("\nNombre: %s\n",productos[x].nombre);
printf("Precio: %f\n",productos[x].precio);
printf("Cantidad en Stock: %d\n",productos[x].cantidad);
}
}
printf("\n\n");
}
else if (opcion==3)
{
printf("Introduzca un nombre: ");
gets(prod.nombre);
gets(prod.nombre);

for(x = 0; x < 10;x++)


{
if (strcmp(productos[x].nombre,prod.nombre)==0)
{
printf("Introduzca un precio: ");
scanf("%f",&productos[x].precio);
printf("Introduzca un stock: ");
scanf("%d",&productos[x].cantidad);
printf("\nProducto modificado.");
}
}
printf("\n\n");
}
}

system("PAUSE");
return 0;
}

25. Que gestiona las notas de una clase de 20 alumnos de los cuales sabemos el nombre
y la nota. El programa debe ser capaz de:

a. Buscar un alumno.
b. Modificar su nota.
c. Realizar la media de todas las notas.
d. Realizar la media de las notas menores de 5.
e. Mostrar el alumno que mejores notas ha sacado.
f. Mostrar el alumno que peores notas ha sacado.

#include <stdio.h>
#include <stdlib.h>

struct alumno {
char nombre[50];
float nota;
};

int main(int argc, char *argv[])


{
struct alumno alum,alumnos[5];

int x,opcion=1;
float sum=0,cont=0,mejor,peor;

for (x=0;x<5;x++)
{
printf("Introduzca nombre alumno:");
gets(alumnos[x].nombre);
gets(alumnos[x].nombre);
printf("Introduzca nota:");
scanf("%f",&alumnos[x].nota);
}

while ((opcion==1 || opcion==2 ||


opcion==3 || opcion==4 ||
opcion==5 || opcion==6) && (opcion!=7))
{

printf("1- Buscar un alumno\n");


printf("2- Modificar nota\n");
printf("3- Media de todas las notas\n");
printf("4- Media de todas las notas inferiores a 5\n");
printf("5- Alumno con mejores notas\n");
printf("6- Alumno con peores notas\n");
printf("7- Salir\n");
printf("Introduzca una opcin: ");
scanf("%d",&opcion);

if (opcion==1)
{
printf("Introduzca un nombre: ");
gets(alum.nombre);
gets(alum.nombre);

for(x = 0; x < 5;x++)


{
if (strcmp(alumnos[x].nombre,alum.nombre)==0)
{
printf("\nNombre: %s\n",alumnos[x].nombre);
printf("Nota: %f\n",alumnos[x].nota);
}
}
printf("\n\n");
}
else if (opcion==2)
{
printf("Introduzca un nombre: ");
gets(alum.nombre);
gets(alum.nombre);

for(x = 0; x < 5;x++)


{
if (strcmp(alumnos[x].nombre,alum.nombre)==0)
{
printf("Introduzca una nota: ");
scanf("%f",&alumnos[x].nota);
printf("\nNota modificada.");
}
}
printf("\n\n");
}
else if (opcion==3)
{
sum=0;
for(x = 0; x < 5;x++)
{
sum=sum+alumnos[x].nota;
}
printf("\nLa media de las notas es de: %f \n",(sum/5));
}
else if (opcion==4)
{
sum=0;
cont=0;
for(x = 0; x < 5;x++)
{
if (alumnos[x].nota<5)
{
sum=sum+alumnos[x].nota;
cont++;
}
}
printf("\nLa media de las notas inferiores a 5 es: %f \n",sum/cont);
}
else if (opcion==5)
{
mejor=0;
for(x = 0; x < 5;x++)
{
if (alumnos[x].nota>mejor)
{
mejor=alumnos[x].nota;
alum.nota=alumnos[x].nota;
strcpy(alum.nombre,alumnos[x].nombre);
}
}
printf("\nEl alumno con mejores notas es: %s \n",alum.nombre);
}
else if (opcion==6)
{
peor=10;
for(x = 0; x < 5;x++)
{
if (alumnos[x].nota<peor)
{
peor=alumnos[x].nota;
alum.nota=alumnos[x].nota;
strcpy(alum.nombre,alumnos[x].nombre);
}
}
printf("\nEl alumno con peores notas es: %s \n",alum.nombre);
}
}

system("PAUSE");
return 0;
}
STE PROGRAMA LEE 3 NOTAS DE 5 ALUMNOS Y DA EL PROMEDIO DE ELLAS ESPERO LE SIRVA A
ALGUIEN YA QUE A MI SI ME DIO GUERRA ESE PROGRAMA.

# include <stdio.h>
int main ()
{

int a[5][4];
int nota=0;
int nota2=0;
int i=0;
int j=0;

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


nota2=0;
for (j=0; j<3; j++){

printf ("ingrese la nota: ");


scanf ("%d", a);
nota2=nota2+nota;
a[i][j]=nota;
a[i][3]=(nota2/3);

}
}

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


printf (" ");
for (j=0; j<4; j++){
printf ("%d ", a[i][j] );

}
}

return 0;
}

qui esta el programa en c++..solo tienen que arreglar la parte de la impreson.....


y agregar la diferencia porcentual......
espero les sirva.....

#include<iostream.h>
#include<iomanip.h>
int main()
{
int i;
int j;
int dias[5][5];
double dia1,dia2,dia3,dia4,dia5;
double media1,media2,media3,media4,media5,media6;
double media7,media8,media9,media10,media11,media12;
double media13,media14,media15,media16,media17;
double media18,media19,media20,media21,media22,media23,media24,media25;
double media26,media27,media28,media29,media30;

cout<<"******CONGRESO NACIONAL******"<<endl;
cout<<"*****INTRODUZCA LOS DATOS****"<<endl;

for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
{
cout<<"introduzca la asistencia por sala "<<i+1<<setw(5)<<j+1<<endl;
cin>>dias[i][j];
}
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
{
dia1=dias[0][0]+dias[0][1]+dias[0][2]+dias[0][3]+dias[0][4];
dia2=dias[1][0]+dias[1][1]+dias[1][2]+dias[1][3]+dias[1][4];
dia3=dias[2][0]+dias[2][1]+dias[2][2]+dias[2][3]+dias[2][4];
dia4=dias[3][0]+dias[3][1]+dias[3][2]+dias[3][3]+dias[3][4];
dia5=dias[4][0]+dias[4][1]+dias[4][2]+dias[4][3]+dias[4][4];
media1=dia1/2,media2=dia2/2,media3=dia3/2,media4=dia4/2,media5=dia5/2;
media6=dias[0][0]/2,media7=dias[0][1]/2,media8=dias[0][2]/2,media9=dias[0][3]/2;
media10=dias[0][4]/2,media11=dias[1][0]/2,media12=dias[1][1]/2,media13=dias[1][2]/2;
media14=dias[1][3]/2,media15=dias[1][4]/2,media16=dias[2][0]/2,media17=dias[2][1]/2;
media18=dias[2][2]/2,media19=dias[2][3]/2,media20=dias[2][4]/2,media21=dias[3][0]/2,m
edia22=dias[3][1]/2;
media23=dias[3][2]/2,media24=dias[3][3]/2,media25=dias[3][4]/2,media26=dias[4][0]/2;
media27=dias[4][1]/2,media28=dias[4][2]/2,media29=dias[4][3]/2,media30=dias[4][4]/2;
}
cout<<"datos de la asistencia"<<endl;
cout<<setw(10)<<" LUNES "<<setw(5)<<" MARTES
"<<setw(5)<<"MIERCOLES"<<setw(5)<<"JUEVES "<<setw(5)<<" VIERNES"<<endl;
cout<<"sala 1
"<<dias[0][0]<<setw(5)<<dias[0][1]<<setw(5)<<dias[0][2]<<setw(5)<<dias[0][3]<<setw(
5)<<dias[0][4]<<setw(5)<<dia1<<endl;
cout<< setw(10)<< media6 <<setw(5)<< media7 <<setw(5)<< media8 <<setw(5)<<
media9 <<setw(5)<< media10 <<setw(5)<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"sala 2
"<<dias[1][0]<<setw(5)<<dias[1][1]<<setw(5)<<dias[1][2]<<setw(5)<<dias[1][3]<<setw(
5)<<dias[1][4]<<setw(5)<<dia2<<endl;
cout<< setw(10)<< media11 <<setw(5)<< media12 <<setw(5)<< media13 <<setw(5)<<
media14 <<setw(5)<< media15 <<setw(5)<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"sala 3
"<<dias[2][0]<<setw(5)<<dias[2][1]<<setw(5)<<dias[2][2]<<setw(5)<<dias[2][3]<<setw(
5)<<dias[2][4]<<setw(5)<<dia3<<endl;
cout<< setw(10)<< media16 <<setw(5)<< media17 <<setw(5)<< media18 <<setw(5)<<
media19 <<setw(5)<< media20 <<setw(5)<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"sala 4
"<<dias[3][0]<<setw(5)<<dias[3][1]<<setw(5)<<dias[3][2]<<setw(5)<<dias[3][3]<<setw(
5)<<dias[3][4]<<setw(5)<<dia4<<endl;
cout<< setw(10)<< media21 <<setw(5)<< media22 <<setw(5)<< media23 <<setw(5)<<
media24 <<setw(5)<< media25 <<setw(5)<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"sala 5
"<<dias[4][0]<<setw(5)<<dias[4][1]<<setw(5)<<dias[4][2]<<setw(5)<<dias[4][3]<<setw(
5)<<dias[4][4]<<setw(5)<<dia5<<endl;
cout<< setw(10)<< media26 <<setw(5)<< media27 <<setw(5)<< media28 <<setw(5)<<
media29 <<setw(5)<< media30 <<setw(5)<<endl;
return (0);
}
Valora esta respuesta

0
Mostrar los multiplos de 3 comprendidos entre los numeros 1 y 20
Cdigo:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int main ()
{
clrscr();
for (int i=1;i<=20;i++)
{
cout<<i;
if (i%3==0) cout<<" Es multiplo de 3" <<endl;
else cout<<" No es multiplo de 3"<<endl;
}
getch();
return 0;
}

Hallar A+B-C+100
Cdigo:
#include <stdio.h>
#include <conio.h.>
int main ()
{
int A, B, C;
printf("Inserte valor para A: "); scanf("%d",&A);
printf("Inserte valor para B: "); scanf("%d",&B);
printf("Inserte valor para C: "); scanf("%d",&C);
printf("\n%d + %d - %d + 100 = %d",A, B, C, (A+B+C-100));
getch();
}

Obtener (a-b)(a+b)
Cdigo:
#include <stdio.h>
#include <conio.h>
int main ()
{
int a, b;
printf("Inserte valor a: "); scanf("%d",&a);
printf("Inserte valor b: "); scanf("%d",&b);
printf("(%d-%d) (%d+%d) = %d",a, b, a, b,((a-b)*(a+b)));
getch();
}

Leer un numero de 3 digitos y sumarlos


Cdigo:
#include <stdio.h>
#include <conio.h>
int main ()
{
int numero, sum_dig=0;
printf("Inserte un numero de 3 digitos: "); scanf("%d",&numero);
if (numero>=100)
{
int num=numero; //salvamos en num, la variable numero
while (numero!=0)
{
sum_dig=sum_dig+(numero%10); //para sacar el ultimo digito de
numero
numero=numero/10; //elimina el ultimo digito de numero
}
printf("La suma de los digitos de %d es : %d",num, sum_dig);
}
else
printf("\a ERROR: El digito no tiene 3 digitos");
getch();
}

Dado un numero verificar:


- Que tenga dos digitos
- Verificar si sus digitos son pares
- Promediar sus digitos
Cdigo:
#include <stdio.h>
#include <conio.h>
int main ()
{
int numero;
printf("Inserte num. de dos digitos pares: ");
scanf("%d",&numero);
int aux=numero;
if(numero<100 && numero>9)
{
int d1=numero%10;
numero=numero/10;
int d2=numero%10;
if(d1%2==0 & d2%2==0)
printf("El promedio d los digitos de %d es: %d",aux,(d1+d2)/2);
}
else
printf("\aERROR: el numero no tiene dos digitos");
getch();
}

Dado un numero verificar si es positivo, negativo o nulo


Cdigo:
#include <stdio.h>
#include <conio.h>
int main ()
{
int numero;
printf("Inserte un numero: ");
scanf("%d",&numero);
if(numero==0)
printf("El numero %d es NULO",numero);
else
{
if(numero<0)
printf("El numero %d es NEGATIVO",numero);
else
printf("El numero %d es POSITIVO",numero);
}
getch();
}

Dados seis numeros enteros determinar, el menor de ellos


Cdigo:
#include<stdio.h>
#include<conio.h>
int main()
{
int a, b, c, d, e, f;
printf("Inserte num.1: "); scanf("%d",&a);
printf("Inserte num.2: "); scanf("%d",&b);
printf("Inserte num.3: "); scanf("%d",&c);
printf("Inserte num.4: "); scanf("%d",&d);
printf("Inserte num.5: "); scanf("%d",&e);
printf("Inserte num.6: "); scanf("%d",&f);
int menor=a;
if(b<menor) menor=b;
if(c<menor) menor=c;
if(d<menor) menor=d;
if(e<menor) menor=e;
if(f<menor) menor=f;
printf("El menor de %d,%d,%d,%d,%d,%d ",a,b,c,d,e,f);
printf("\nEs %d",menor);
getch();
}

En lnea

Ilusin o realidad?

Darvein Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #1 en: 26 Febrero 2008, 18:41

Desconectado
>> SERIES <<
Mensajes:
hallar la sumatoria de: 2! + 4! + 6! + 8! + ...
182
Cdigo:
#include <stdio.h>
#include <conio.h>
int facto (int x)
{
int f=1;
for (int i=1;i<=x;i++)
{f=f*i;}
return (f);
}

int main ()
{
int n, serie=2, suma=0;
printf ("Inserte cantidad de terminos a generar: ");
scanf ("%d",&n);
for (int i=1;i<=n;i++)
{
printf ("%d! + ",serie);
suma=suma+(facto(serie));
serie=serie+2;
}
printf (" = %d",suma);
getch();
}
Generar la serie: 1, 5, 3, 7, 5, 9, 7, ..., 23
Cdigo:
#include <stdio.h>
#include <conio.h>

int main ()
{
int serie=1;
bool sw=true;
do
{
printf("%d, ",serie);
if (sw) serie+=4;
else serie-=2;
sw=!sw;
} while (serie<=23);
getch();
}

Generar 5,10,15,20,25,30,35....n
Cdigo:
#include<stdio.h>
#include<conio.h>
int main ()
{
int n, c=1, serie=5;
printf("Cantidad de terminos: ");
scanf("%d",&n);
while(c<=n)
{
printf("%d,",serie);
serie+=5; c++;
}
getch();
}

Si n=7 generar 7,6,5,4,3,2,1


Cdigo:
#include<stdio.h>
#include<conio.h>
int main ()
{
int n, c=1;
printf("Cantidad de terminos: ");
scanf("%d",&n);
int serie=n;
while(c<=n)
{
printf("%d,",serie);
serie--; c++;
}
getch();
}

En lnea

Ilusin o realidad?

Darvein Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #2 en: 26 Febrero 2008, 18:42

Desconectado
>> VECTORES <<
Mensajes:
/*Dado el vector T de tamao n. Si el tamao es par invertir los
182
elementos de la mitad de los elementos
Ejemplo: v=[1][2][3][4][5][6] v(invertido)=[3][2][1][6][5][4]
*/
Cdigo:
#include<stdio.h>
#include<conio.h>

void llenar (int V [], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("Inserte pos.[%d]: ",i);
scanf("%d",&V[i]);
}
}

void mostrar (int V [], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("[%d]",V[i]);
}
}

void invierte (int V [], int d)


{
int aux1;
int fin1 = d / 2;
for (int i = 1 ; i <= (d / 2) / 2 ; i++)
{
aux1 = V [i];
V [i] = V [fin1];
V [fin1] = aux1;
fin1--;
}

fin1 = d;
for (int j = (d / 2) + 1 ; j <= (d / 2) + 1 ; j++)
{
aux1 = V [j];
V [j] = V [fin1];
V [fin1] = aux1;
fin1--;
}
}

int main ()
{
int V[20];
int d;
printf ("Inserte dimen. del vector: "); scanf("%d",&d);
llenar (V, d);
printf ("\nVECTOR ORIGINAL: \n");
mostrar (V, d);
printf ("\n\nVECTOR LUEGO DE LA INVERSION: \n");
invierte (V, d);
mostrar (V, d);
getch();
}

/*Dado un polinomio evualuarlo en el punto x (todo en un vector)*/


Cdigo:
#include <stdio.h>
#include <conio.h>

void llenar (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("Inserte pos.[%d]: ",i);
scanf("%d",&V[i]);
}
}

void mostrar (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("[%d]",V[i]);
}
}

int potencia (int b, int e)


{
int p = 1;
for (int i = 1 ; i <= e ; i++)
{
p = p * b;
}
return (p);
}

void evalua (int V [], int d, int x)


{
int s = 0;
for (int i = 1 ; i <= d ; i += 2)
{
s = s + (V [i] * potencia (x, V [i + 1]));
}
printf("\n\nX es igual a: %d",s);
}

int main ()
{
int V[20];
int d, x;
printf("Inserte dimen. del vector: ");
scanf("%d",&d);
printf ("Inserte valor de (x): ");
scanf("%d",&x);
llenar (V, d);
printf("\nVECTOR: ");
mostrar (V, d);
evalua (V, d, x);
getch();
}

En lnea

Ilusin o realidad?

Darvein Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #3 en: 26 Febrero 2008, 18:44

Desconectado
>> MATRICES <<
Mensajes:
Generar la matriz:
182
[01][02][03][04]
[08][07][06][05]
[09][10][11][12]
Cdigo:
#include<stdio.h>
#include<conio.h>
void llenar (int M[20][20], int f, int c)
{
int k=1;
for (int i=1;i<=f;i++)
{
if (i%2!=0)
{
for (int j=1;j<=c;j++)
{
M[i][j]=k; k++;
}
}
else
{
for (int j=c;j>=1;j--)
{
M[i][j]=k; k++;
}
}
}
}

void mostrar (int M[20][20], int f, int c)


{
for (int i=1;i<=f;i++)
{
printf("\n");
for (int j=1;j<=c;j++)
{
printf("[%d] ",M[i][j]);
}
}
}

int main ()
{
int f, c;
int M[20][20];
printf("Inserte filas de M: "); scanf("%d",&f);
printf("Inserte cols. de M: "); scanf("%d",&c);
llenar(M, f, c);
mostrar(M, f, c);
getch();
}

Generar la matriz:
[01][02][03][04]
[05][06][07][00]
[08][09][00][00]
[10][00][00][00]
Cdigo:
#include <stdio.h>
#include <conio.h>
void llenar (int M[20][20], int d)
{
int cont=1;
for (int i=1;i<=d;i++)
{
for (int j=1;j<=d;j++)
{
if ((i+j)<=(d+1))
{M[i][j]=cont; cont++;}
else
M[i][j]=0;
}
}
}

void mostrar (int M[20][20], int d)


{
for (int i=1;i<=d;i++)
{
printf("\n");
for (int j=1;j<=d;j++)
{
printf ("[%d] ",M[i][j]);
}
}
}

int main ()
{
int d;
int M[20][20];
printf("Insert dimen: "); scanf("%d",&d);
llenar(M, d);
mostrar(M, d);
getch();
}

Dadas dos matrices A y B intercambiar los minimos de A con los


maximos de B
Cdigo:
#include <stdio.h>
#include <conio.h>

void llenar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M[i][j]);
}
}
}

void mostrar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M[i][j]);
}
}
}

int menor (int M[20][20], int f, int c)


{
int men = M [1] [1];
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
if (M [i] [j] < men)
men = M [i] [j];
}
}
return (men);
}

int maximo (int M[20][20], int f, int c)


{
int max = M [1] [1];
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
if (M [i] [j] > max)
max = M [i] [j];
}
}
return (max);
}

void intercambiar (int A[20][20], int fa, int ca, int


B[20][20], int fb, int cb)
{
int min_a = menor (A, fa, ca);
int max_b = maximo (B, fb, cb);
//para cambiar los minimos de A con los maximos de B
for (int i = 1 ; i <= fa ; i++)
{
for (int j = 1 ; j <= ca ; j++)
{
if (A[i][j] == min_a)
A[i][j]=max_b;
}
}
//para intercambiar los maximos de con los minimos de A
for (int i = 1 ; i <= fb ; i++)
{
for (int j = 1 ; j <= cb ; j++)
{
if (B[i][j] == max_b)
B[i][j]=min_a;
}
}
}

int main ()
{
int A [20] [20];
int B [20] [20];
int fa, ca, fb, cb;
printf ("Insert filas de A: "); scanf("%d",&fa);
printf ("Insert columnas de A: "); scanf("%d",&ca);
printf ("Insert filas de B: "); scanf("%d",&fb);
printf ("Insert columnas de B: "); scanf("%d",&cb);

//lectura de matrices
printf ("\nINSERTANDO DATOS EN MATRIS A: \n");
llenar (A, fa, ca);
printf ("\nINSERTANDO DATOS EN MATRIS B: \n");
llenar (B, fb, cb);
printf ("\nMATRICES ORIGINALMENTE INSERTADAS: ");
mostrar (A, fa, ca);
printf ("\n");
mostrar (B, fb, cb);
printf ("\n");
//intercambiando elementos
intercambiar (A, fa, ca, B, fb, cb);
printf ("\nMATRICES DESPUES DEL INTERCAMBIO:");
mostrar (A, fa, ca);
printf ("\n");
mostrar (B, fb, cb);
getch();
}

/*Dada una matris cuadrada invertir su diagonal principal*/


Cdigo:
#include <stdio.h>
#include <conio.h>

void llenar (int M[20][20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
for (int j = 1 ; j <= d ; j++)
{
printf ("Inserte pos[%d][%d]: ",i, j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrar (int M[20][20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf("\n");
for (int j = 1 ; j <= d ; j++)
{
printf ("[%d]",M [i] [j]);
}
}
}

void invierte (int M[20][20], int d)


{
int fin = d;
for (int i = 1 ; i <= d / 2 ; i++)
{
int aux = M [i] [i];
M [i] [i] = M [d] [d];
M [d] [d] = aux;
fin--;
}
}

int main()
{
int M [20] [20];
int d;
printf ("Inserte dimen. de la matris cuadrada: ");
scanf("%d",&d);
llenar (M, d);
printf ("\nMATRIS ORIGINAL: ");
mostrar (M, d);
printf ("\n\nMATRIS CON LA DIAGONAL PRINCIPAL INVERTIDA:
");
invierte (M, d);
mostrar (M, d);
getch();
}

/*Dada una matris cuadrada invertir su diagonal secundaria*/


Cdigo:
#include <stdio.h>
#include <conio.h>
void llenar (int M[20][20], int d)
{
for (int i = 1 ; i <= d ; i++)
{
for (int j = 1 ; j <= d ; j++)
{
printf ("Inserte pos[%d][%d]: ",i, j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrar (int M[20][20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf("\n");
for (int j = 1 ; j <= d ; j++)
{
printf ("[%d]",M [i] [j]);
}
}
}

void invierte (int M[20][20], int d)


{
int fin = d;
for (int i = 1 ; i <= d / 2 ; i++)
{
int aux = M [i] [d];
M [i] [d] = M [d] [i];
M [d] [i] = aux;
fin--;
}
}

int main()
{
int M [20] [20];
int d;
printf ("Inserte dimen. de la matris cuadrada: ");
scanf("%d",&d);
llenar (M, d);
printf ("\nMATRIS ORIGINAL: ");
mostrar (M, d);
printf ("\n\nMATRIS CON LA DIAGONAL SECUNDARIA INVERTIDA:
");
invierte (M, d);
mostrar (M, d);
getch();
}

/*Dada dos matrices de diferentes tamanios R y S mostrar los


elementos comunes de R en S*/
Cdigo:
#include <stdio.h>
#include <conio.h>

void llenar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j]);
}
}
}

void comunes (int R[20][20], int fr, int cr, int


S[20][20], int fs, int cs)
{
printf("\n\nLos elementos comunes de R en S son: ");
for (int i = 1 ; i <= fr ; i++)
{
for (int j = 1 ; j <= cr ; j++)
{
for (int k = 1 ; k <= fs ; k++)
{
for (int l = 1 ; l <= cs ; l++)
{
if (R [i] [j] == S [k] [l])
printf ("[%d]",R [i] [j]);
}
}
}
}
}

int main()
{
int R [20] [20];
int S [20] [20];
int fr, cr, fs, cs;
printf("Inserte filas de R: ");
scanf("%d",&fr);
printf("Inserte columnas de R: ");
scanf("%d",&cr);
printf("Inserte filas de S: ");
scanf("%d",&fs);
printf("Inserte columnas de S: ");
scanf("%d",&cs);

printf("\nLLENANDO MATRIS R: \n");


llenar (R, fr, cr);
printf("\nLLENANDO MATRIS S: \n");
llenar (S, fs, cs);
printf("\nLA MATRIS R : ");
mostrar (R, fr, cr);
printf("\n\nLA MATRIS S : ");
mostrar (S, fs, cs);
comunes (R, fr, cr, S, fs, cs);
getch();
}
/*Intercambiar los datos de la columna 1 con la ultima columna*/
Cdigo:
#include <stdio.h>
#include <conio.h>

void llenar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos:[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j]);
}
}
}

void intercambiar (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
int aux = M [i] [1];
M [i] [1] = M [i] [c];
M [i] [c] = aux;
}
}

int main ()
{
int M [20] [20];
int f, c;
printf ("Inserte filas de la matris: ");
scanf("%d",&f);
printf ("Inserte columnas de la matris: ");
scanf("%d",&c);

printf ("\nLLENANDO MATRIS : \n");


llenar (M, f, c);
printf ("\nLA MATRIS ORIGINAL : ");
mostrar (M, f, c);
printf ("\n\nLA MATRICES INTERCAMBIADA : ");
intercambiar (M, f, c);
mostrar (M, f, c);
getch();
}

/* Contar el numero de digitos de cada elemento de una matris */


Cdigo:
#include <stdio.h>
#include <conio.h>

void llenar (int M [20] [20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrar (int M [20] [20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j]);
}
}
}

void cuenta (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
int contador = 0;
int n=M[i][j];
while (n != 0)
{
n = n / 10;
contador++;
}
printf("\n[%d] tiene: %d digito(s)",M[i][j],contador);
}
}
}

int main ()
{
int M [20] [20];
int f, c;
printf ("Inserte filas de la matris: ");
scanf("%d",&f);
printf ("Inserte columnas de la matris: ");
scanf("%d",&c);

printf ("\nLLENANDO MATRIS M: \n");


llenar (M, f, c);
printf ("\nLA MATRIS: ");
mostrar (M, f, c);
printf ("\n\nCONTEO DE DIGITOS: ");
cuenta (M, f, c);
getch();
}

/*Hallar la fila y la columna del primer elemento "e" */


Cdigo:
#include <stdio.h>
#include <conio.h>

void llenarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf ("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j] );
}
}
}

void busqueda (int M[20][20], int f, int c, int e)


{
int bn = 0;
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
if (M [i] [j] == e)
{
printf("\nEl numero: %d se encuentra en la posicion:
[%d][%d] de la matris",e, i, j);
bn = 1;
}
}
}
if (bn == 0)
printf("\nNo se encontro el numero %d en la matris
:(",e);
}

int main ()
{
int M [20] [20];
int f, c, numero;
printf ("Inserte filas de la matris: ");
scanf("%d",&f);
printf ("Inserte columnas de la matris: ");
scanf("%d",&c);

printf ("\nLLENANDO MATRIS: \n");


llenarMatris (M, f, c);
printf ("\nLA MATRIZ Z: ");
mostrarMatris (M, f, c);

printf ("\n\nInserte un numero: ");


scanf("%d",&numero);
busqueda (M, f, c, numero);
getch();
}

En lnea

Ilusin o realidad?

Darvein Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #4 en: 26 Febrero 2008, 18:45

Desconectado
>> MATRICES y VECTORES<<
Mensajes:
/* Dada una matris y un vector, contar la cantidad de numeros
182
primos de ambos */
Cdigo:
#include <stdio.h>
#include <conio.h>

void llenarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf ("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j] )
}
}
}

void llenarVector (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("Inserte pos.[%d]: ",i);
scanf("%d",&V [i]);
}
}

void mostrarVector (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("[%d]",V [i]);
}
}

int primosMatris (int M[20][20], int f, int c)


{
int cant = 0;
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
int cc = 0;
for (int k = 1 ; k <= M [i] [j] ; k++)
{
if (M [i] [j] % k == 0)
cc++;
}
if (cc == 2)
cant++;
}
}
return (cant);
}
int primosVector (int V[20], int d)
{
int cant = 0;
for (int i = 1 ; i <= d ; i++)
{
int c = 0;
for (int j = 1 ; j <= V [i] ; j++)
{
if (V [i] % j == 0)
c++;
}
if (c == 2)
cant++;
}
return (cant);
}

int main()
{
int M [20] [20];
int V [20];
int f, c, d;
printf ("Inserte filas de la matris: ");
scanf("%d",&f);
printf ("Inserte columnas de la matris: ");
scanf("%d",&c);
printf ("Inserte dimension del vector: ");
scanf("%d",&d);

printf ("\nLLENANDO MATRIS: \n");


llenarMatris (M, f, c);
printf ("\nLLENANDO EL VECTOR: \n");
llenarVector (V, d);

printf ("\nLA MATRIS: ");


mostrarMatris (M, f, c);
printf ("\n\nEL VECTOR: \n");
mostrarVector (V, d);

int primos = primosMatris (M, f, c) + primosVector (V,


d);
printf ("\n\nLA CANTIDAD DE NUMEROS PRIMOS QUE HAY EN LOS
ARREGLOS ES: %d",primos);
getch();
}

/*Dada la matrix de m*n y el vector de tamanio n, determinar que


columna de la matris
es igual al vector*/
Cdigo:
#include <stdio.h>
#include <conio.h>

void llenarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}

void mostrarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
printf ("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j] );
}
}
}

void llenarVector (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("Inserte pos.[%d]: ",i);
scanf("%d",&V [i]);
}
}

void mostrarVector (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("[%d]",V [i]);
}
}

void procedure (int M[20][20], int f, int c, int V[20],


int d)
{
for (int i = 1 ; i <= f ; i++)
{

int sw = 1;
for (int j = 1 ; j <= c ; j++)
{
for (int k = 1 ; k <= d ; k++)
{
if (M [j] [i] != V [k])
sw = 0;
}
}
if (sw == 1)
printf ("\n\nLa columna %d es igual al vector",i);
}
}

int main ()
{
int M [20] [20];
int V [20];
int f, d;
printf ("Inserte filas de la matris: ");
scanf("%d",&f);
printf ("Inserte dimension del vector: ");
scanf("%d",&d);

printf ("\nLLENANDO MATRIS: \n");


llenarMatris (M, f, d);
printf ("\nLLENANDO EL VECTOR: \n");
llenarVector (V, d);

printf ("\nLA MATRIS: ");


mostrarMatris (M, f, d);
printf ("\n\nEL VECTOR: \n");
mostrarVector (V, d);

procedure (M, f, d, V, d);


getch();
}

/*Dada una matris Z almacenar en un vector A la suma por sus


columnas
y en un vector B la suma por sus filas */
Cdigo:
#include <stdio.h>
#include <conio.h>

void llenarMatris (int M[20][20], int f, int c)


{
for (int i = 1 ; i <= f ; i++)
{
for (int j = 1 ; j <= c ; j++)
{
printf ("Inserte pos[%d][%d]: ",i,j);
scanf("%d",&M [i] [j]);
}
}
}
void mostrarMatris (int M[20][20], int f, int c)
{
for (int i = 1 ; i <= f ; i++)
{
printf ("\n");
for (int j = 1 ; j <= c ; j++)
{
printf ("[%d]",M [i] [j] );
}
}
}

void llenarVector (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("Inserte pos.[%d]: ",i);
scanf("%d",&V [i]);
}
}

void mostrarVector (int V[20], int d)


{
for (int i = 1 ; i <= d ; i++)
{
printf ("[%d]",V [i]);
}
}

void vectorA (int M[20][20], int f, int c, int A[20], int


d)
{
for (int i = 1 ; i <= f ; i++)
{
int suma = 0;
for (int j = 1 ; j <= c ; j++)
{
suma = suma + M [j] [i];
}
A [i] = suma;
}
}

void vectorB (int M[20][20], int f, int c, int B[20], int


d)
{
for (int i = 1 ; i <= f ; i++)
{
int suma = 0;
for (int j = 1 ; j <= c ; j++)
{
suma = suma + M [i] [j];
}
B [i] = suma;
}
}

int main ()
{
int Z [20] [20];
int A [20];
int B [20];
int f, c;
printf ("Inserte filas de la matris: ");
scanf("%d",&f);
printf ("Inserte columnas de la matris: ");
scanf("%d",&c);

printf ("\nLLENANDO MATRIS: \n");


llenarMatris (Z, f, c);

printf ("\nLA MATRIZ Z: ");


mostrarMatris (Z, f, c);

printf ("\n\nSUMA POR COLUMNAS DE LA MATRIS (vector A):


\n");
vectorA (Z, f, c, A, c);
mostrarVector (A, c);
printf ("\n\nSUMA POR FILAS DE LA MATRIS (vector B):
\n");
vectorB (Z, f, c, B, f);
mostrarVector (B, f);
getch();
}

En lnea

Ilusin o realidad?

darkness7977 Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #5 en: 29 Febrero 2008, 00:47

Desconectado hey...que bien y que casualidad recien en estos dias han iniciado la clase
de progrmacion estructurada (apenas hoy comenzare a meterle mano al
Mensajes: 33 manual y al compilador) gracias por los codigos,me serviran para
analizarlos

En lnea

Darvein Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #6 en: 29 Febrero 2008, 19:03
Desconectado Citar
gracias por los codigos,me serviran para analizarlos
Mensajes:
182 Tengo mas, luego los subire tengo sobre recurisividad, matrices,
vectores, archivos, cadenas etc. xD

Que bueno saber que esos ejercicios le sirvio a alguien.

En lnea

Ilusin o realidad?

AxXioma Re: Ejercicios resueltos C++ [programacion estructurada]


Respuesta #7 en: 29 Febrero 2008, 20:01

Gracias, buen aporte.


Desconectado

Mensajes:
796

Algunos En lnea
pjaros no
pueden ser
enjaulados...

You might also like