matrices en c

Iniciado por ALONSOQ, 18 Junio 2012, 13:21 PM

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

ALONSOQ

Buenos días

Por favor que me falla en el siguiente código? ¿ por que me escribe por pantalla los números que quiere?

muchísimas gracias

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

main()
{
      int matriz[5];
     int valor=10;
      int i;
     
      for(i=0;i<=5;i++)
      {
      matriz= valor;
      }
     
       printf(" %d", &matriz);
       
       
     getch();
}

maxim_o

#1
EN primer lugar en este caso se llama array, cuando tu lo declaras de N elementos (en este caso 5) , va desde la posicion 0 hasta N-1 (en este caso 4), es decir hay 5 posiciones, 0,1,2,3,4.
Por lo que el for debe recorrer desde i=0 hasta i<5.

En segundo lugar, cada valor tienes que añadirselo a una posicion.
matriz[0]=1;
matriz[1]=10;
etc
Código (cpp) [Seleccionar]

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

main()
{
     int matriz[5];
    int valor=10;
     int i;
   
     for(i=0;i<5;i++)
     {
          matriz[i]= valor;
          printf("%d ", matriz[i]);
     }
     
      getch();
}


ALONSOQ

perdona pero no te sigo; añado el código con algunas modificaciones


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

main()
{
      int matriz[5];
     int valor=10;
      int i;
     
      for(i=0;i<5;i++)
      {
      matriz= valor;
      }
     
       printf("%d",&matriz);
       
       
     getch();
     
}

Me siguen saliendo valores sin sentido, cuando tendría que imprimir 10 10 10 10 10

seguro que es muy facil, per yo llevo muy poco tiempo usando este lenguaje y me cuasta bastante ver el error

muchas gracias

Maik33

cuando haces matriz = valor, estas asignando un valor entero a un puntero.
La matriz tiene diferentes celdas de memoria, para acceder al primer "hueco" tienes que poner matriz[0]=valor, asi asignas el valor de "valor" a la primera posicion del vector:
Esto es lo que tienes:
matriz:
___________________________________________________________________
|___matriz[0]__|__matriz[1]___|___matriz[2]___|___matriz[3]__|__matriz[4]___|

cada rectangulo es una direccion de memoria y puedes asignar valor a cada posicion, pero no puedes hacer matriz=valor.

No se si me explico.

Luego para mostrar por pantalla los valores tendrias que ir con un for imprimiendo cada uno.

maxim_o

#4
Buenas revisa el codigo que te puse , que ahora lo he puesto con las etiquetas y sale bien...

TU fallo es tanto para añadir el valor a la posicion del array, como para imprimirlo tienes que ir posicion a posicion
Código (cpp) [Seleccionar]
matriz[i]= valor;
printf("%d" , matriz[i]);


ALONSOQ

Muchísimas gracias a ambos, lo he entendido perfectamente

un saludo

twins

Hola amigo lo que pasa es que lo que tienes hay no es una matriz es un vector una matriz tiene dos coordenadas (matriz[j]) y para imprimir y llenar la matriz necesitas un for anidado es decir dos for a continuacion te dejo el codigo cualquir duda me preguntas yo se bastante de c a proposito tambien estoy pidiendo ayuda con listas enlazadas jaja.
bueno aqui te dejo el codigo.

#include<stdio.h>
int main(void){
   int i,j,matriz[3][3];
   for(i=0;i<3;i++)
      for(j=0;j<3;j++)
         matriz[j]=10;//llena la matriz con 10
   
   for(i=0;i<3;i++){//imprime la matriz
      printf("\n");
      for(j=0;j<3;j++)
         printf("[%i]",matriz[j]);
   }   
   getchar();
return(0);//el compilador le dice al sistema operativo que se acabo la ejecucion del programa.   
}   
   

noele1995

Hola twins, en efecto eso es lo que es una matriz pero en el ejemplo que has dado la estas usando mal, ya que las estas declarando con 2 DIMENSIONES y solo estas pasandole el puntero al que tiene que ire de una de las dimensiones tanto en el momento de llenarla como en el de imprimirla. Dejo tu codigo modificado en c++.

Código (cpp) [Seleccionar]
#include<iostream>

int main(void){
   int i,j, matriz[3][3];

   using std::cout;
   using std::cin;

   for(i=0;i<3;i++)
      for(j=0;j<3;j++)
         matriz[i][j]=10;//llena la matriz con 10
   
   for(i=0;i<3;i++){//imprime la matriz
      for(j=0;j<3;j++)
cout << "Imprimiendo la matriz[" << i << "][" << j << "] ------> " << matriz[i][j] << "\n";
   }   
   getchar();
return(0);//el compilador le dice al sistema operativo que se acabo la ejecucion del programa.   
}


Saludos, Noele1995

twins

A! pues eso debe ser en c++ porque en c no habria problemas y este ejemplo no use punteros esta normal, saludos.

twins

aaaa!!! jajaja se me quedo afuera la posicion de la jaja q cosas no!