[ Foro de C ]

realizar un programa que utilice una funcion para leer un vector

01-Aug-2014 19:56
Invitado (chicaprinstom)
4 Respuestas

hola! tengo una duda con este ejercicio que teoricamente deberia estar bien pero en el compilador me da error, haber si me podeis ayudar!


#include<stdio.h>
void leer vector(int *,int);
void main(void)
{
int vector[10];
leer vector (vector,10);
int i;
for(i=0;i<10;i++)
printf("%d",vector[i]);
void leer vector(int *v,int dim)
{
int i;
for(i=0;i<=dim,i++)
printf("\n deme el valor %d:",i);
scanf("%d",&v[i]);
}
}


graciias!


01-Aug-2014 20:13
Nacho Cabanes (+83)

Ayudaría si dices qué error tienes y en qué línea.

De momento, sin probarlo, yo veo un error muy claro: una función no puede contener un nombre con espacios, de modo que "leer vector" no es un nombre válido. Sí lo sería "leervector", "leerVector" o "leer_vector".


02-Aug-2014 08:08
Invitado (chicaprinstom)

hola de nuevo! el problema es ese que el error me lo da desde la primera llave, te pongo aqui lo que me sale en el compilador:

  C:\Users\Desktop\SinNombre2.c In function `main':
4 C:\Users\Desktop\SinNombre2.c [Warning] return type of 'main' is not `int'
 [Linker error] undefined reference to `leer_vector'
4 C:\Users\Desktop\SinNombre2.c ld returned 1 exit status

muchisimas gracias!


02-Aug-2014 09:45
Nacho Cabanes (+83)

Justo lo que te decía en el mensaje que te acabo de contestar: estás usando características obsoletas, "main" debería ser "int", no void.

Además, como el fuente está mal tabulado, cuesta ver los errores, porque te falta cerrar la llave de "main" (la cierras después de la función adicional) y tampoco tienes llaves en el "for", que repite dos órdenes.

Hay otros errores menores, como que el "for" va desde 0 hasta la dimensión (no abrevies tanto los nombres), cuando debería ir hasta "dimension-1".

Y otras cosas mejorables: no mezcles la declaración de variables con las órdenes. Declara todas las variables al principio (salvo las que uses en un "for", que en las versiones recientes de C se podrían declarar dentro del propio "for").

Finalmente, yo te recomendaría, si eres principiante, poner las funciones adicionales antes de "main", en vez de incluir el prototipo de las funciones antes, luego "main" y luego los detalles de las funciones.

Con todo eso, yo reescribiría tu programa así:


#include<stdio.h>

void leerVector(int *v,int dimension)
{
    int i;
    
    for(i=0;i<dimension,i++)
    {
        printf("\n deme el valor %d:",i);
        scanf("%d",&v[i]);
    }
}

int main()
{
    int vector[10];
    int i;
    
    leerVector (vector,10);
    for(i=0;i<10;i++)
        printf("%d",vector[i]);

    return 0;
}


No lo he probado, pero la apariencia es mucho mejor.

Insisto, busca un curso más moderno. El mío es más moderno en su versión PDF (que es del año pasado) que la versión web (de hace unos cinco años). Si aun así quieres la versión web, la tienes en estas mismas páginas:

http://www.aprendeaprogramar.com/course/view.php?id=3

y el PDF lo tienes en mi web:

http://www.nachocabanes.com/c/

Ambos los quiero revisar pronto, pero ese "pronto" quiere decir en octubre, porque en este momento son prioritarios los apuntes de C# para mis alumnos.


02-Aug-2014 09:54
Invitado (chicaprinstom)

muchisimas gracias!voy a usar tu curso para ver si asi me aclaro un poco ya que mis apuntes son un desastrillo!:)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)