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();
}
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
#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();
}
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
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.
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
matriz[i]= valor;
printf("%d" , matriz[i]);
Muchísimas gracias a ambos, lo he entendido perfectamente
un saludo
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.
}
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++.
#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
A! pues eso debe ser en c++ porque en c no habria problemas y este ejemplo no use punteros esta normal, saludos.
aaaa!!! jajaja se me quedo afuera la posicion de la jaja q cosas no!