• Jueves 28 de Marzo de 2024, 10:57

Autor Tema:  Matrices y punteros  (Leído 1212 veces)

kikocrak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Matrices y punteros
« en: Lunes 28 de Diciembre de 2009, 22:38 »
0
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
  1.  
/* 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

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Matrices y punteros
« Respuesta #1 en: Viernes 1 de Enero de 2010, 23:46 »
0
el problema es que declaras tres variables como punteros:
Código: C
  1. int *ceros,*pos,*nega;
  2.  
las utilizas como estáticas:
Código: C
  1. ceros=0;
  2. pos=0;
  3. nega=0;
  4. Cuenta(m,filas,columnas,&ceros,&pos,&nega);
  5. printf("Hay %d ceros.n",ceros);
  6. printf("Hay %d numeros positivos.n",pos);
  7. printf("Hay %d numeros negativos.n",nega);
  8.  

Se soluciona simplemente con el cambio:
Código: C
  1. int ceros, pos, nega;
  2.  

kikocrak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Matrices y punteros
« Respuesta #2 en: Domingo 3 de Enero de 2010, 16:58 »
0
Muchas gracias, tio ya esta solucionado.