• Viernes 8 de Noviembre de 2024, 20:00

Autor Tema:  Necesito Ayuda Para Pillar Un Error  (Leído 1586 veces)

asmodeous

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Necesito Ayuda Para Pillar Un Error
« en: Martes 8 de Mayo de 2007, 22:16 »
0
Hola tengo un problema con el siguiente codigo que hice.

se supone que crea un vector de n numeros y luego lo copia a un auxiliar, pero algo falla al ser el n mayor que 10..

alguien podria ayudarme porfa??

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int llenar(int v1[],int v2[],int n){
  6.    
  7.     int i;
  8.    
  9.     for (i=0;i<n;i++)
  10.         v1[i]=rand()%100;
  11.                
  12.     for (i=0;i<n;i++)
  13.         v2[i]=v1[i];
  14.  
  15. }
  16.  
  17. int mostrar(int v1[],int v2[], int n){
  18.     int i;
  19.    
  20.     for(i=0;i<n;i++){
  21.             printf("%i\t",v1[i]);
  22.             printf("%i\n",v2[i]);
  23.             }
  24.  
  25. }
  26.  
  27. int main (int n){
  28.  
  29.     int v1[n], v2[n];
  30.  
  31.    
  32.     printf("Ingrese el largo del vector\n");
  33.     scanf("%d",&n);
  34.    
  35.     llenar (v1,v2,n);
  36.     mostrar(v1,v2,n);
  37.    
  38.     system("pause");  
  39.    
  40.     return 0;
  41. }
  42.    
  43.  
  44.  
"In a world without fences and walls, who need GATES and WINDOWS????"

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #1 en: Martes 8 de Mayo de 2007, 22:34 »
0
Depuralo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

asmodeous

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #2 en: Martes 8 de Mayo de 2007, 22:46 »
0
y eso como lo hago??
"In a world without fences and walls, who need GATES and WINDOWS????"

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #3 en: Martes 8 de Mayo de 2007, 22:47 »
0
1) Coloca
Código: Text
  1. return 0
  2.  
en "llenar" y "mostrar"
2) No podés definir el tamaño de un array mediante una variable. Utiliza una expresión constante o crealos de la siguiente forma:
Código: Text
  1. int *v1, *v2;
  2.  
(No te olvides de eliminarlos al final mediante delete).

Un saludo
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

asmodeous

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #4 en: Martes 8 de Mayo de 2007, 23:19 »
0
angel_k_ido no entendi :S

aun no me pasan punteros.. solo funciones

por mas que depuro el programa no puedo pillar el error, pero me tinca que es en llenar en la parte del random (tiene que ser con random)


al compilar me tira los siguientes warning pero no se mucho a que se refiere :

Código: Text
  1.  
  2. 35 C:\Documents and Settings\Administrador\Escritorio\tarea 2\tarea 2.c [Warning] passing arg 1 of `llenar' makes pointer from integer without a cast
  3. 35 C:\Documents and Settings\Administrador\Escritorio\tarea 2\tarea 2.c [Warning] passing arg 3 of `llenar' makes integer from pointer without a cast
  4. 36 C:\Documents and Settings\Administrador\Escritorio\tarea 2\tarea 2.c [Warning] passing arg 1 of `mostrar' makes pointer from integer without a cast
  5. 36 C:\Documents and Settings\Administrador\Escritorio\tarea 2\tarea 2.c [Warning] passing arg 3 of `mostrar' makes integer from pointer without a cast
  6.  
  7.  

si puedes ayudarme a encontrar algo de info sobre esto o donde pueda encontrar algun codigo parecido seria genial


 :hola: bytez!
"In a world without fences and walls, who need GATES and WINDOWS????"

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #5 en: Martes 8 de Mayo de 2007, 23:59 »
0
Código: Text
  1.  
  2. int main (int n){
  3.    int v1[100], v2[100];
  4.  
  5.    printf("Ingrese el largo del vector no mayor a 100\n");
  6.  
  7.  

Eso haría que no tengas que usar punteros.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #6 en: Miércoles 9 de Mayo de 2007, 00:19 »
0
Cita de: "asmodeous"
angel_k_ido no entendi :S

aun no me pasan punteros.. solo funciones
Bueno, te he dado dos formas de hacerlo, la primera (Sin punteros) es la que te propone Enko.
Además podrías leer n de la siguiente manera:
Código: Text
  1. do{
  2.   scanf("%d",&n);
  3. }while(n<0 || n>100);
  4.  
para evitarte problemas.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

asmodeous

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #7 en: Miércoles 9 de Mayo de 2007, 01:44 »
0
ya miren... me puse a depurar el programa y al parecer el error lo tenia en la funcion llenar, en usar el rand()

asi que lo saque y en numeros chicos (1,2,3,4,5) funciona bien, pero en numeros mas grandes(10,100,19999) se cae.

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int random(int n){
  6.      rand()%100;
  7.      }
  8.      
  9. int llenar(int n,int v1[],int v2[]){
  10.    
  11.     int i;
  12.    
  13.     for (i=0;i<n;i++){
  14.         v1[i]=random(n);
  15.         v2[i]=v1[i];      
  16.         }
  17. }
  18.  
  19. int mostrar(int n,int v1[],int v2[]){
  20.     int i;
  21.    
  22.     for(i=0;i<n;i++){
  23.             printf("%i\t",v1[i]);
  24.             printf("%i\n",v2[i]);
  25.             }
  26.     return 0;
  27. }
  28.  
  29.  
  30. int main (int n){
  31.    
  32.     int v1[n], v2[n];
  33.        
  34.     printf("Ingrese el largo del vector\n");
  35.  
  36.     scanf("%d",&n);
  37.    
  38.    
  39.     llenar(n,v1,v2);
  40.     mostrar(n,v1,v2);
  41.    
  42.     system("pause");  
  43.    
  44.     return 0;
  45. }
  46.    
  47.      
  48.  
  49.  

aqui el codigo con los cambios

gracias por responder
"In a world without fences and walls, who need GATES and WINDOWS????"

asmodeous

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Necesito Ayuda Para Pillar Un Error
« Respuesta #8 en: Miércoles 9 de Mayo de 2007, 02:19 »
0
me respondo solo xD:

(lol)

Primero defino un max, luego el n lo declaro al lado del vector en el main y sin parametros y ahi me funciono.


no se me habia ocurrido lo del define...

bueno ahi queda para el que lo necesite..


gracias por todo
"In a world without fences and walls, who need GATES and WINDOWS????"