Ayuda con matrices y vectores

Iniciado por ezemidget, 12 Diciembre 2013, 23:36 PM

0 Miembros y 1 Visitante están viendo este tema.

ezemidget

Buenas, tengo que rendir programacion y estuve practicando unos ejercicios con matrices y vectores que es lo que me van a tomar y no me sale, si alguien puede ayudarme se lo agradeceria.

Este es el primero:

Realizar un programa donde se ingresen las notas de 10 alumnos en 5 materias, calcular el promedio general.

De este ejercicio llegue hasta aca y me quede trabajo

Citar#include <stdio.h>
#include <conio.h>

int i, j ;
float nota[10][5], suma, prom;
main()
{
      for(i=1 ; i<=10 ; i++){
              for(j=1 ; j<=5; j++){
                      printf("Ingrese las notas del alumno");
                      scanf("%f", &nota[j]);
                      suma=suma+nota[j];
                      }
                      }
                      prom=suma/50;
                      printf("El promedio general es de", &prom);
                     
                      return(0);
                      getch;
                      }
                     

Y este es el segundo:

Realizar un programa donde se ingresen la cantidad de personas que concurren a una carpa en un mes ( en total 20 carpas) (el maximo de personas por carpa son 6)
a) Calcular el promedio con carpa
b)Calcular las carpas que tienen excesos de personas
c)La cantidad de carpas que estan desocupadas
d) Calcular la ganancia que ha tenido mensualmente si por persona cobran $60

Mas que para que me hagan los ejercicios agradeceria si me pueden explicar como usar matrices y vectores

SoyelRobert

Mmm a ver:

las variables i, j solo las usas para los fors por lo que no tiene utilidad declararlas como variables globales... Lo mismo para suma y promedio.

Luego, tu printf está dentro del segundo for eso implica que se repetirá en todas las compenetes de la matriz.

En C los arrays empiezan en la componente 0 (si es bidimensional, entonces 0,0)


mira:


#include <stdio.h>

typedef float mat [10][5];

void main()
{
int i, j;
int asignatura = 0;
int alumno = 0;
mat A;
float nota, promedio;
float suma = 0;
puts("NOTAS:\n");
for(i=0; i<9; i++){
    printf("Alumno %d\n", alumno+1);
    alumno ++;
for(j=0;j<5; j++){
    printf("asignatura %d: ", asignatura+1);
    scanf("%f", &A[i][j]);
    asignatura ++;
}
asignatura = asignatura -5;
}
asignatura = 0;

}


Eso seria un ejemplo de como cargar la matriz.

Ahora solo te queda calcular el promedio a ti  ;)
getting louder!

leosansan

#2
*Como sólo vas a usar una sola matriz, no le veo mucho sentido el uso de typedef, sencillamente la declaro en main.

*La función main, por cuestiones del Standard, debe ser entera, con el consiguiente return al final de la misma.

*Creo que mejor definir las variables "alumno" y "asignatura" como iguales a uno, así no hay que  estar sumando +1 en cada bucle.

*Como picardía puedo aprovechar el postincremento y ahorrarme alumno ++ y asignatura ++, pero es cuestión de gustos y claridad.

*En el primer for i va hasta <10, en lugar de <9.

**Y especialmente es bueno "indentar" el código.


Código (cpp) [Seleccionar]
#include <stdio.h>

int main()
{
   int i, j;
   int asignatura = 1,alumno = 1;
   float A[10][5];
   puts("NOTAS:\n");
   for(i=0; i<10; i++){
       printf("Alumno %d\n", alumno++);
       for(j=0;j<5; j++){
           printf("asignatura %d: ", asignatura++);
           fflush (stdout);
           scanf("%f", &A[i][j]);
       }
       asignatura = 1;
   }
   return 0;
}


REEDITO:

Cita de: ezemidget en 12 Diciembre 2013, 23:36 PM
Mas que para que me hagan los ejercicios agradecería si me pueden explicar como usar matrices y vectores

Creo que más vale un ejemplo que mil palabras:
Bueno, que no se diga que no ayudamos a los noveles, como yo. Aquí está con la media:

Código (cpp) [Seleccionar]
#include <stdio.h>
#define  ALUMNOS        10
#define  ASIGNATURAS    5

int main()
{
   int i, j;
   int asignatura = 1,alumno = 1;
   float A[ALUMNOS][ASIGNATURAS];
   float promedio_total=0, promedio[ALUMNOS]={0};
   puts("NOTAS:\n");
   for(i=0; i<ALUMNOS; i++){
       printf("Alumno %d\n", alumno++);
       for(j=0;j<ASIGNATURAS; j++){
           printf("asignatura %d: ", asignatura++);
           fflush (stdout);
           scanf("%f", &A[i][j]);
           promedio[i]+=A[i][j];
       }
       promedio[i]/= ASIGNATURAS;
       printf("\npromedio alumno %d es %g: \n", i+1,promedio[i]);
       asignatura = 1;
   }
   for (i=0;i<ALUMNOS;i++)
       promedio_total+=promedio[i];
   promedio_total/=ALUMNOS;
   printf("\npromedio total es %g: \n", promedio_total);
   return 0;
}


Saluditos! ..... !!!!        

SoyelRobert

#3
Cita de: leosansan en 14 Diciembre 2013, 14:28 PM
*Como sólo vas a usar una sola matriz, no le veo mucho sentido el uso de typedef, sencillamente la declaro en main.

*La función main, por cuestiones del Standard, debe ser entera, con el consiguiente return al final de la misma.

*Creo que mejor definir las variables "alumno" y "asignatura" como iguales a uno, así no hay que  estar sumando +1 en cada bucle.

*Como picardía puedo aprovechar el postincremento y ahorrarme alumno ++ y asignatura ++, pero es cuestión de gustos y claridad.

*En el primer for i va hasta <10, en lugar de <9.

**Y especialmente es bueno "indentar" el código:


Si jaja la verdad es que el typedef lo he puesto casi que por costumbre en este caso efectivamente es tonteria

Pero lo de que Main debe ser entera? Si no se esta usando el retorno del main para nada, si se declara como void no habria problema... hasta donde yo tengo entendido...

Y respecto al fflush tampoco tiene mucha utilidad en este pequeño programa no?

salu2!
getting louder!

leosansan

#4
Con respecto a main ya te indique que es cuestión del estándar de C y respecto al fflush(stdout)  a lo simple  es necesario para asegurarnos después de un printf sin \n de que el texto se envie a la salida estándar, puedes usar el motor de búsqueda para ampliar.

Saluditos! ..... !!!!