Programación General > C/C++

 Matrices y punteros

(1/1)

kikocrak:
Buenas gente tengo que hacer un programa que pase una matriz por referencia y de esa matriz me diga el numero de ceros, de valores positicos y de negativos, lo he hecho de la siguiente forma pero nada. Muchas gracias.

--- Código: C --- /* Dada una matriz de dimensiones d1xd2 devuelva el numero de elementos negativos, iguales a cero y positivos que tenga*/

#include<stdio.h>
#include<stdlib.h>

main(){
   
        int filas, columnas;
        int *ceros,*pos,*nega;
        int *m;
        int i,j;
        void Cuenta(int *m,int filas,int columnas,int *ceros,int *pos,int *nega);
       
        do{
            printf("Introduzca el numero de filas][%d]=",i,j);
                scanf("%d",(m+columnas*i+j));
            }
        }
      ceros=0;
      pos=0;
      nega=0;
Cuenta(m,filas,columnas,&ceros,&pos,&nega);
      printf("Hay %d ceros.n",ceros);
      printf("Hay %d numeros positivos.n",pos);
      printf("Hay %d numeros negativos.n",nega);
    }
       

void Cuenta(int *m,int filas,int columnas,int *ceros,int *pos,int *nega){
   
   
    int i,j;
   
    for(i=0;i<filas;i++){
            for(j=0;j<columnas;j++){
               
                if(*(m+columnas*i+j)==0){
                    (*ceros)++;
                }
                if(*(m+columnas*i+j)<0){
                    (*nega)++;
                }
                if(*(m+columnas*i+j)>0){
                    (*pos)++;
                }
            }
        }

}

punteroNULO:
el problema es que declaras tres variables como punteros:

--- Código: C ---int *ceros,*pos,*nega;  las utilizas como estáticas:

--- Código: C ---ceros=0;pos=0;nega=0;Cuenta(m,filas,columnas,&ceros,&pos,&nega);printf("Hay %d ceros.n",ceros);printf("Hay %d numeros positivos.n",pos);printf("Hay %d numeros negativos.n",nega); 
Se soluciona simplemente con el cambio:

--- Código: C ---int ceros, pos, nega; 

kikocrak:
Muchas gracias, tio ya esta solucionado.

Navegación

[0] Índice de Mensajes

Ir a la versión completa