Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

Problema con funcion

Participa en el tema Problema con funcion en el foro Programación.
Hola gente, recien estoy comenzando con ejercicios basicos de c/c++ en la facu y tengo ...

Buscar en este tema:
 
  •  
    #1 Problema con funcion
    Hola gente, recien estoy comenzando con ejercicios basicos de c/c++ en la facu y tengo un problemita al querer hacer una funcion que devuelva un vector con la sumatoria de las columnas de una matriz (se entiende?)
    Pego el codigo a ver si alguien me puede dar una manito porque ya van varias horas y no le encuentro la vuelta. Lo que esta subrayado es la parte del codigo que me tira error (cannot convert int to int)

    Desde ya mil gracias.

    #include <conio.h>
    #include <iostream.h>

    void cargarMatriz(int [3][3]);
    void imprimirColumna(int [3][3]);
    int calcularPromedio(int [3][3]);
    int sumarColumna(int [3][3], int []);
    void buscarMayor(int [3][3], int []);
    main()
    {
    int matrizCargada[3][3];
    int vec[3];
    int i;
    int vecMax[3];

    cargarMatriz(matrizCargada);
    imprimirColumna(matrizCargada);
    cout<<"El Promedio de los datos ingresados es: "<<calcularPromedio(matrizCargada)<<endl;
    sumarColumna(matrizCargada,vec);
    for (int j=0; j<3; j++){
    cout<<"Para la columna "<<j<<" la suma es: "<<vec[j]<<endl;
    }

    buscarMayor(matrizCargada,vecMax);
    for (i=0; i<3; i++){
    cout<<"El mayor de la fila: "<<i<<" es: "<<vecMax[i]<<endl;
    }
    getch();
    return 0;
    }

    //funcion para cargar la matriz
    void cargarMatriz(int matriz[3][3])
    {
    int num, i, j;
    cout<<"Ingrese los numeros para la matriz"<<endl;
    for(i=0; i<3; i++){
    for(j=0; j<3; j++){
    cin>>num;
    matriz[i][j]=num;
    }
    }
    }
    //funcion que imprime por columna
    void imprimirColumna(int imprimePorColumna[3][3])
    {int i,j;
    for(j=0; j<3; j++){
    for(i=0; i<3; i++){
    cout<<"En la columna "<<j<<" esta el dato "<<imprimePorColumna[i][j]<<endl;
    }
    }
    }

    //funcion que calcula el promedio
    int calcularPromedio(int matrizPromedio[3][3])
    {
    int sumador=0;
    int i, j;
    long promedio, result;
    for(i=0; i<3; i++){
    for(j=0; j<3; j++){
    sumador=sumador+matrizPromedio[i][j];
    }
    }
    promedio=i*j;
    result=sumador/promedio;
    return result;
    }
    //funcion que genera e imprime un vector con la suma de cada columna
    int sumarColumna(int sumaDeColumnas[3][3], int vector[])
    {
    int suma;
    for(int j=0; j<3; j++){
    suma=0;
    for(int i=0; i<3; i++){
    suma=suma+sumaDeColumnas[i][j];
    }
    vector[i]=suma;
    }
    return vector;
    }


    //FUNCION QUE BUSCA MAYOR POR FILA
    void buscarMayor(int matriz[3][3],int v[])
    {
    int mayor;
    for(int I=0; I<3; I++){
    mayor=matriz[i][0];
    for(int J=0; J<3; J++){
    if(mayor<matriz[i][J]){
    mayor=matriz[i][J];
    }
    }
    v[i]=mayor;
    }
    }
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/968746-problema-con-funcion.html
    | Más
  • #2 Re: Problema con funcion

    no podés poner "return vector" si vector es int[] y tu función tiene que devolver int.
    Me gusta este mensaje
  • #3 Re: Problema con funcion

    Como dijo pangus la funcion espera devolver int y le estas pasando un int[] por otro lado deberias pasar vec por referencia para que en la funcion llamadora puedas levantar luego el valor seteado en el array, ademas de quedar mas prolijo porque si lo pasas por valor el compilador te genera una copia con lo que consumis mas memoria.
    Me gusta este mensaje
  • #4 Re: Problema con funcion

    Las funciones de C sólo pueden retornar un escalar, es decir, un único valor. Esto se amplió en algún momento del desarrollo de C, creo que al pasarse al estándar ANSI C, para que pudiera retornar una estructura.
    Lo que no puede hacer es retornar un vector o una matriz. Lo más parecido que puede hacer es retornar un puntero a vector o matriz, dado que el puntero es un escalar, o sea un único valor.
    Pero si el puntero apunta a una variable local a la función, al retornar de la función las variables locales a la misma desaparecen, y el puntero termina apuntando a un lugar de la memoria que ya probablemente no contiene lo que se quiso poner.
    Una solución es que se retorne un puntero a una variable global (externa a toda función).
    Otra solución, más elegante y poco conocida, consiste en englobar el vector o matriz dentro de una estructura, y retornar la estructura.
    Lo habitual es en estos casos no retornar nada, sino modificar los parámetros que se pasaron a la rutina.
    Si a la función le paso como parámetro el nombre de un vector, lo que realmente le estoy pasando es un puntero al vector. Si dentro de la función modifico los elementos del vector, también se modificarán afuera.
    Editado por Kryptonyte - 13.10.2009 23:32 hs.
    Me gusta este mensaje
  • #5 Re: Problema con funcion

    Muchas gracias a los que se tomaron el tiempo de responder, lo solucione pasandolo como referencia y la funcion la pase de int a void, la verdad es que aun me mareo con las funciones jejeje.

    Nuevamente gracias!!!
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 4 RESPUESTAS
  • 1676 VISTAS
  • 4 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB