Dev - C++ - Ayuda con un error (Funciones y matrices)

 
Vista:

Ayuda con un error (Funciones y matrices)

Publicado por Marisol (1 intervención) el 21/11/2015 14:43:38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include<conio.h>
#include<ctype.h>
 
using namespace std;
 
 
    int LeaMatriz(int numfil, int numcol, int mat[20][20]){
    int i, j;
    cin>>numfil, numcol;
    for (i=1; i<=numfil; i++){
        for (j=1; j<=numcol; j++){
            cin>>mat[i][j];
        }
    }
    return mat[numfil][numcol];
    }
    int SumaMatrices(int numfil, int numcol, int matresult[20][20], int mat[20][20], int mat2[20][20]){
        int i, j;
        cin>>numfil, numcol;
        for (i=1; i<=numfil; i++){
            for (j=1; j<=numcol; j++){
                matresult[i][j]=mat[i][j]+mat2[i][j];
            }
        }
        return matresult[numfil][numcol];
    }
    void EscribaMatriz(int numfil, int numcol, int matresult[20][20]){
        int i, j;
        cin>>numfil, numcol;
          for (i=1; i<=numfil; i++){
            for (j=1; j<=numcol; j++){
                cout<<matresult[i][j];
            }
        }
    }
    int PromValMat(int numfil, int numcol, int mat[20][20]){
        int i, j, sum=0;
		float prom;
 
        cin>>numfil, numcol;
        for (i=1; i<=numfil; i++){
            for (j=1; j<=numcol; j++){
                sum=sum+mat[i][j];
            }
        }
        prom=sum/(numfil*numcol);
        return prom;
    }
 
    	int main(){
        int numfil, numcol, mat[20][20], mat2[20][20], matresult[20][20];
        mat[20][20]= LeaMatriz(numfil,numcol, mat[20][20]);
        mat2[20][20]=LeaMatriz(numfil, numcol,mat2[20][20]);
        matresult[20][20]=SumaMatrices(numfil, numcol, mat[20][20], mat2[20][20], matresult[20][20]);
        EscribaMatriz(numfil, numcol, matresult[20][20]);
        cout<<"El promedio de los valores de la matriz es "+PromValMat(numfil, numcol, mat[20][20]);
 
 
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 45
Ha disminuido su posición en 6 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un error (Funciones y matrices)

Publicado por xve (68 intervenciones) el 21/11/2015 20:15:30
Hola Marisol que error ta da??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un error (Funciones y matrices)

Publicado por agustin (522 intervenciones) el 22/11/2015 12:00:37
¿que sentido tiene pasar numfil y numcol como valor si luego lo cambias en la función desechando el valor con el que entran? Esos dos parámetros sobran y deberías declararlos dentro de la funcion:
   int LeaMatriz(int numfil, int numcol, int mat[20][20])
Eso te pasa en todas las funciones.
Otra cosa sería que necesitases tener esos valores a la salida que entonces si que estaría justificado pasarlos como referencia. Yo no le encuentro ningún sentido a lo que haces con esas variables.
Realmente no se si eso se puede hacer:
1
   cin>>numfil, numcol;
Creo que sería:
1
   cin>>numfil>>numcol;
Y creo que no estaría de más un:
1
cout <<"Introduce el valor para pos ["<<i <<"]["<<j<<"]: ";
Justo antes del cin.
Las matrices comienzan desde 0 así que i y j tendrían que empezar valiendo 0:
1
2
3
    for (i=1; i<=numfil; i++){
        for (j=1; j<=numcol; j++){
            cin>>mat[i][j];
En esos for no se rellenarán todos los índices 0. Además si le dices que quieres que tenga 20 tendrías un bonito crasheo por desbordamiento. También deberías controlar que el valor introducido para numfil y numcol estén entre 1 y 20 y si se cumple les restas 1 y ejecutas el resto.
¿Para que retornas el último valor introducido? Esto sobra y yo la pondría void la funcion:
1
 return mat[numfil][numcol];
En sumaMatrices lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar