Código C
Código C
Código C
20 Votos
Matriz en C++
« en: 26 Noviembre 2010, 05:49 »
Como hago para que en una matriz cuadrada sume el triangulo superior al triangulo inferior,
es decir ....por ejemplo ingreso una matriz de 3x3 asi .....
|2 3 1|
|4 5 6|
|3 4 1|
Código
Código
1. #include<iostream.h>
2. #include<stdio.h>
3. #include<stdlib.h>
4.
5. using namespace std;
6.
7. int main()
8. {
9. int A[50][50];
10. int i,j,m,n;
11.
12. cout<<"Ingrese dimensiones de la matriz: ";
13. cin>>m;
14. cin>>n;
15. /*-----------FORMAR MATRIZ-------------------------*/
16. for(i=0;i<m;i++)
17. {
18. for(j=0;j<n;j++)
19. {
20. cout<<"A["<<i+1<<"]"<<"["<<j+1<<"]=";
21. cin>>A[i][j];
22. }
23. }
24.
25.
26. /*-------------MOSTRAR MATRIZ--------------------------*/
27. cout<<"\n Matriz A: \n";
28. {
29. for(i=0;i<m;i++)
30. {
31. for(j=0;j<n;j++)
32. {
33. cout<<"\t"<<A[i][j];
34. }
35. cout<<"\n";
36. }
37. cout<<"\n";
38. }
39.
40. /*---------------------------------------------------------*/
41.
42.
43. system("PAUSE>nul");
44. return 0;
45. }
int a=1;
int b=0;
int c=0; //Declaracion de variables, a y b =fila y columna del primer elemento a
sumar; c y d=fila y columna del segundo
int d=1; //elemento a sumar
int counter=0; //Esta variable será el contador que nos servirá para saber cuando parar
se sumar
matriz[a][b-1]=matriz[a][b-1]+matriz[a-1][d]];
}
}
matriz[a]=matriz[a]+matriz[c][d];
counter++;
if(counter+1==numero_columnas){matriz[a][b-1]=matriz[a][b-1]+matriz[a-
1][d];}
}
/*
A con k filas y m columnas,
B con m filas y n columnas.
C es la matriz que resulta del producto AB.
C presenta k filas y n columnas.
#include <iostream>
using namespace std;
int main()
{
int A[20][20], B[20][20], C[20][20];
int k, m, n;
// Inicializamos la matriz C.
for(int i=0; i<k; ++i)
for(int j=0; j<n; ++j)
C[i][j] = 0;
// Generamos la matriz C.
for(int i=0; i<k; ++i)
for(int j=0; j<n; ++j)
for(int z=0; z<m; ++z)
C[i][j] += A[i][z] * B[z][j];
cout<<"Matriz A: ";
for(int i=0; i<k; ++i)
{
for(int j=0; j<m; ++j)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}
cout<<"Matriz B: ";
for(int i=0; i<m; ++i)
{
for(int j=0; j<n; ++j)
{
cout<<B[i][j]<<" ";
}
cout<<endl;
}
cout<<"Matriz C: ";
for(int i=0; i<k; ++i)
{
for(int j=0; j<n; ++j)
{
cout<<C[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
INICIO
FORMACIÓN BÁSICA
o Iniciación
o Conceptos Básicos
o Curso Básico de C
o Curso Básico de POO
SOURCE ENGINE
o Tutoriales Básicos
o Left 4 Dead
o Counter-Strike: Global Offensive
o Portal 2
RPG MAKER VX ACE
PROYECTOS
o Mods
Left 4 Dead
Left 4 Dead 2
DOCUMENTALES
OFF-TOPIC
25 ejercicios resueltos de arrays y registros en C
19:19 Curso básico de C 33 comments
Durante el sexto capítulo del curso básico de C vimos la teoría de los arrays y los registros. Hace unos
días dejé una tanda de 25 ejercicios para practicar.
Realice un programa en C:
1. Que rellene un array con los 100 primeros números 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 números 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 números 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++;
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 números 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 números 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 números por teclado, los almacene en un array y muestre la suma, resta, multiplicación
y división 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 número\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("Multiplicación: %d\n",mul);
printf("División: %d\n",div);
system("PAUSE");
return 0;
7. Que lea 10 números por teclado, los almacene en un array y los ordene de forma ascendente.
#include <stdio.h>
#include <stdlib.h>
int main()
int i,j,n=10;
for (i=0;i<n;i++){
printf("Escriba un número");
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 números por teclado, 5 para un array y 5 para otro array distinto. Mostrar los 10
números en pantalla mediante un solo array.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
for (i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros1[i]);
for (i=0;i<5;i++){
printf("Escriba un número");
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 números por teclado, los copie a otro array multiplicados por 2 y muestre el segundo
array.
#include <stdio.h>
#include <stdlib.h>
int main()
int i,j;
for (i=0;i<5;i++){
printf("Escriba un número");
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 números 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 i,j;
for (i=0;i<5;i++){
printf("Escriba un número");
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 números 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 números por teclado, los almacene en un array y muestre la media.
#include <stdio.h>
#include <stdlib.h>
int main()
int i;
sum=0;
for (i=0;i<10;i++){
printf("Escriba un número");
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 números tanto positivos como negativos y los muestre
ordenados.
#include <stdio.h>
#include <stdlib.h>
int main()
int i,j,n=10;
for (i=0;i<n;i++){
printf("Escriba un número");
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 números y luego busque un número concreto.
#include <stdio.h>
#include <stdlib.h>
for (i=0;i<20;i++){
printf("Escriba un número");
scanf("%d",&vector[i]);
while(inf<=sup)
centro=(sup+inf)/2;
if (vector[centro]==dato)
printf("Existe\n");
x=1;
break;
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 x,y;
for (x=0;x<8;x++)
for (y=0;y<8;y++)
//peones
if (x==1 || x==6)
printf("P");
//torres
printf("T");
//caballos
else if ((x==0 && y==1) ||
printf("C");
//alfiles
printf("A");
//reina
printf("M");
//rey
printf("R");
}
else
printf(" ");
printf("\n");
system("PAUSE");
return 0;
16. Que muestre los primeros 100 números de izquierda a derecha usando un array de dos
dimensiones.
#include <stdio.h>
#include <stdlib.h>
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 números 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>
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 números pares, lo pinte y después que pida una
posición X,Y y mostrar el número correspondiente.
#include <stdio.h>
#include <stdlib.h>
for (y=0;y<3;y++)
numeros[x][y]=num;
num=num*2;
scanf("%d",&x);
scanf("%d",&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>
for (y=0;y<3;y++)
numeros[x][y]=num;
num++;
printf("\n\n\n");
printf("\n\n\n");
}
system("PAUSE");
return 0;
#include <stdio.h>
#include <stdlib.h>
int indice,x;
char frase[50];
gets(frase);
if (frase[x]=='\0')
indice=x;
break;
printf("%c",frase[x]);
printf("\n\n");
system("PAUSE");
return 0;
#include <stdio.h>
#include <stdlib.h>
int sum=0,x;
char frase[50];
gets(frase);
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\n");
system("PAUSE");
return 0;
#include <stdlib.h>
int sum=0,x;
char frase[50];
gets(frase);
sum++;
printf("\n\n");
system("PAUSE");
return 0;
23. Que lea una cadena y la encripte sumando 3 al código ASCII de cada carácter. Mostrar por
pantalla.
#include <stdio.h>
#include <stdlib.h>
int sum=0,x;
char frase[50];
gets(frase);
if (frase[x]!='\0')
frase[x]=frase[x]+3;
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 información a recoger será:
nombre del producto, precio, cantidad en stock. La tienda dispone de 10 productos distintos. El
programa debe ser capaz de:
1. Dar de alta un producto nuevo.
2. Buscar un producto por su nombre.
3. 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 x,opcion=1;
for (x=0;x<10;x++)
strcpy(productos[x].nombre,"X");
productos[x].precio=0;
productos[x].cantidad=0;
printf("4- Salir\n");
scanf("%d",&opcion);
if (opcion==1)
gets(prod.nombre);
gets(prod.nombre);
scanf("%f",&prod.precio);
scanf("%d",&prod.cantidad);
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)
gets(prod.nombre);
gets(prod.nombre);
if (strcmp(productos[x].nombre,prod.nombre)==0)
printf("\nNombre: %s\n",productos[x].nombre);
printf("Precio: %f\n",productos[x].precio);
printf("\n\n");
else if (opcion==3)
gets(prod.nombre);
gets(prod.nombre);
if (strcmp(productos[x].nombre,prod.nombre)==0)
{
printf("Introduzca un precio: ");
scanf("%f",&productos[x].precio);
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:
1. Buscar un alumno.
2. Modificar su nota.
3. Realizar la media de todas las notas.
4. Realizar la media de las notas menores de 5.
5. Mostrar el alumno que mejores notas ha sacado.
6. Mostrar el alumno que peores notas ha sacado.
#include <stdio.h>
#include <stdlib.h>
struct alumno {
char nombre[50];
float nota;
};
int x,opcion=1;
float sum=0,cont=0,mejor,peor;
for (x=0;x<5;x++)
gets(alumnos[x].nombre);
gets(alumnos[x].nombre);
printf("Introduzca nota:");
scanf("%f",&alumnos[x].nota);
opcion==3 || opcion==4 ||
scanf("%d",&opcion);
if (opcion==1)
gets(alum.nombre);
gets(alum.nombre);
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)
gets(alum.nombre);
gets(alum.nombre);
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;
sum=sum+alumnos[x].nota;
else if (opcion==4)
sum=0;
cont=0;
if (alumnos[x].nota<5)
sum=sum+alumnos[x].nota;
cont++;
}
else if (opcion==5)
mejor=0;
if (alumnos[x].nota>mejor)
mejor=alumnos[x].nota;
alum.nota=alumnos[x].nota;
strcpy(alum.nombre,alumnos[x].nombre);
else if (opcion==6)
peor=10;
if (alumnos[x].nota<peor)
peor=alumnos[x].nota;
alum.nota=alumnos[x].nota;
strcpy(alum.nombre,alumnos[x].nombre);
}
system("PAUSE");
return 0;