Está en la página 1de 43

Código C++ – Ejemplo de Matrices

enero 3, 2008 por beastieux, posted in c++, programación

20 Votos

1 //Codificado por sAfOrAs


2 //Muestra la suma de filas y columnas de una matriz de 5x5
??=include<iostream>
3 ??=include<iomanip>
4 using namespace std;
5 int main()
6 ??<
7 int n[5][5],i=0,j=0,k=0, sum=0, sumf=0,sumc=0;
cout<<"\t\t\tMuestra la suma de filas y columnas\n";
8 for(i=0;i<5;i++)
9 {
10 for(j=0;j<5;j++)
11 {
k++;
12 cout<<"Ingrese el valor "<<k<<" :";
13 cin>>n[i][j];
14
15 }
16
17 }
18 for(i=0;i<5;i++)
{
19 for(j=0;j<5;j++)
20 {
21 cout<<setw(3)<<n[i][j]<<" ";
22 sumf=sumf+n[i][j];
23 sum=sumf;
}
24 sumf=0;
25 //setw(3)<<setfill('<caracter para completar> ') son controlados por la
26 //cambian la anchura de caracteres y setfill se usa si la anchura
27 //especificada sea mayor de la necesaria
28
29 cout<<"= "<<sum;cout<<endl;
}
30 cout<<setw(3)<<" -----------------------"<<" "<<endl;
31 for(i=0;i<5;i++)
32 {
33 for(j=0;j<5;j++)
{
34 sumc=sumc+n[j][i];
35 sum=sumc;
36 }
37 sumc=0;
38
39 cout<<setw(3)<<sum<<" ";
40 }
cout<<endl<<endl;
41
42
43 cin.ignore(); return 0;
44
45 ??>
46
47
48
49
50
51
52
53

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|

y sumar: (fila1 y columna2) con (fila2 y columna1)=3+4=7


(fila1 y columna3) con (fila3 y columna1)=1+3=4
(fila2 y columna3) con (fila3 y columna2)=6+4=10
entonces que me muestra la nueva matriz que sera:
|2 3 1|
|7 5 6|
| 4 10 1|

OJALA ME ENTIENDAN, Y ESPERO QUE ME AYUDEN .........


es que yo solo implemente el código para ingresar una matriz .....pero quisiera que el
programa hiciera lo que le dije anteriormente PARA MATRICES DE nxn.
Estoy trabajando en DEV C++....

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. }

Re: Matriz en C++


« Respuesta #2 en: 27 Noviembre 2010, 22:48 »
ey!! una vez que tengas la matriz formada puedes hacer lo siguiente:

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

if(numero_filas==numero_columnas || numero_filas<numero_columnas) { //esto no


tiene nada que explicar

for(a,b,c,d;a<numero_filas;a++,d++;) { //el bucle se repetirá el numero de filas-1,


imagina una matriz 3x3, cuando llegamos a la
//tercera fila, ya solo nos queda sumar
dos elementos, el 2-1 y el 1-2 (el 0-0 es el 1º num)

matriz[a]=matriz[a]+matriz[c][d]; //realizamos la suma e incrementamos la


variable counter en 1
counter++;

if(counter+1==numero_filas) { //volvamos al ejemplo de la matriz 3x3,


el contador estará a 2, como sumamos 1, se pone a 3
//y como 3=3(nº filas) pues hace la ultima
suma

matriz[a][b-1]=matriz[a][b-1]+matriz[a-1][d]];

}
}

if (numero_columnas>numero_filas) { //bueno esto es igual que antes


pero con una matriz con nºcolumnas>nºfilas

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];}
}

Espero haberte ayudado, prueba el código, no lo he probado, lo acabo de inventar,


no se si estará bien o mal, es para numero de filas y columnas >1 , si quieres
generalizar ya tienes una idea de como hacerlo , espero que esté bien jeje

un saludo, si tienes algun problema avisa

Producto de matrices en C++


Si usted recién está empezando a aprender C++, esta es una muy buena oportunidad para
continuar con su aprendizaje.
En este tema tratamos el producto de matrices en C++.
No consiste simplemente multiplicar cada elemento [i][j]de una matriz A por un elemento
de una matriz B de las mismas posiciones.
El producto de matrices tiene cierta peculiaridad, a diferencia de la suma y resta entre
matrices.

A continuación presentamos el código y además un video explicativo que detalla paso a


paso la elaboración del programa:

/*
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.

C[i][j] = A[i][0] * B[0][j] + A[i][1] * B[1][j] + A[i][2] * B[2][j]


+ ... + A[i][m-1] * B[m-1][j]
*/

#include <iostream>
using namespace std;

int main()
{
int A[20][20], B[20][20], C[20][20];
int k, m, n;

cout<<"Lectura de matriz A."<<endl;


cout<<"Filas de A: "; cin>>k;
cout<<"Columnas de A: "; cin>>m;
cout<<endl;
for(int i=0; i<k; ++i)
for(int j=0; j<m; ++j)
{
cout<<"Ingrese valor para A["<<i<<"]["<<j<<"]: ";
cin>>A[i][j];
}

cout<<"Lectura de matriz B."<<endl;


cout<<"Filas de B: "<<m<<" (ya esta definido y es
necesario)."<<endl;
cout<<"Columnas de B: "; cin>>n;
cout<<endl;
for(int i=0; i<m; ++i)
for(int j=0; j<n; ++j)
{
cout<<"Ingrese valor para B["<<i<<"]["<<j<<"]: ";
cin>>B[i][j];
}

// 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.

Foto tomada de freedigitalphotos.net

Pues como viene siendo habitual os dejo la solución de los mismos.

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++;

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 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()

float aux, numeros[10];

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 aux, numeros1[5],numeros2[5],numeros3[10];

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 aux, numeros1[5],numeros2[5];

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 aux, numeros1[5],numeros2[5],numeros3[10];

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()

float sum, numeros1[10];

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()

float aux, numeros[10];

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>

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 número");

scanf("%d",&vector[i]);

printf("Escriba el número 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 números 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 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>

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

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 número 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 revés.

#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 mayúsculas 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 mayúsculas\n\n",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 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 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 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 opción: ");

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:

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 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 opción: ");

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;

¿Qué os parecen los ejercicios?

También podría gustarte