Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SDCC en 10 Noviembre 2017, 04:42 am



Título: Error: "........Dejo de funcionar"
Publicado por: SDCC en 10 Noviembre 2017, 04:42 am
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int m,x,j,m2[m],m3[x];
  5.  
  6. for (m=1;m<=10;m++){
  7. m2[m]=m*3;
  8. }
  9. for (x=1;x<=10;x++){
  10. m3[x]=x*2;
  11. }
  12. for(x=1;x<=10;x++){
  13. for(j=1;j<=10;j++){
  14. if(m2[x] == m3[j]){
  15. printf("%i \n",m2[j]);
  16. }
  17. }
  18. }
  19. }
  20.  
  21.  

Buenos dias compañeros disculpen estoy comenzando en esto y me tope con este error a la hora de asignar una valor dentro una matriz , tengo la percepción de que el error puede estar en ell como declare alguna variable pero realmente aun no logro entender de manera lógica en que es lo que estoy mal , principalmente el programa es sencillo y lo único que intento hacer es que se imprima los valores que se repiten en la tabla de 2 y 3


Título: Re: Error: "........Dejo de funcionar"
Publicado por: CalgaryCorpus en 10 Noviembre 2017, 06:53 am
Pide memoria explicita, por ejemplo 

int arreglo[10];   <-- 10 enteros

esto esta mal:

int arreglo
  • ;   <--- cuantos elementos tiene este arreglo?

Para C / C++ tienes siempre que especificar el tamano de los arreglos cuando los defines.
No es necesario cuando luego los usas (los recorres). En ese momento tienes que recordar que los indices validos van de 0 hasta el valor que pusiste en tu definicion - 1.

Osea para este arreglo:

int arreglo[10];

los indices validos van de 0 a 9.

hacer un ciclo asi:

for( i = 1; i <= 10; i++ ) arreglo = ..

tiene el inconveniente que cuando i vale 10,  arreglo[10] no existe, (recuerdas que los indices van de 0 a 9?)

Tu programa esta lleno de estos errores.
Los corrijes y el programa se comportara mejor.