Autor
|
Tema: Problema de compilación (Leído 2,565 veces)
|
shulneos
Desconectado
Mensajes: 12
|
Hola buenas estoy empezando en esto de la programación y en la carrera nos piden que definamos una estructura llamada Array, y posteriormente definamos unas funciones. El problema lo tengo a la hora de definir la función ya que me tira error de compilación en la linea donde se define la función. Este es el código. // Crea y devuelve un array de tamaño n = lsup-linf+1 // con los números enteros comprendidos entre los límites // linf y lsup, asignados al array de forma aleatoria entre los // índices 1 y n. El array contendrá finalmente una // permutación con los números enteros comprendidos entre // dichos límites. // Req: linf<=lsup struct Array {int *v; int n;};
Array ArrayCreaAleatorio(int linf, int lsup;) { Array a; a.n=lsup-linf+1; a.v=malloc(sizeof(Array)*a.n); for (int i=0; i<a.n;i++) a.v[i]=linf+i; for (int j=0;j<=a.n-2;j++) { int k=EnteroAleatorio(j+1,a.n-1); int aux=a.v[j]; a.v[j]=a.v[k]; a.v[k]=aux; } return a; } Si alguien me puede decir donde la estoy jodiendo, le estaría muy agradecido.
|
|
« Última modificación: 8 Agosto 2013, 22:19 pm por shulneos »
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Hola buenas, suponiendo que EnteroAleatorio esté definido, el único problema es este: Array ArrayCreaAleatorio(int linf, int lsup;)
Fíjate en el penúltimo carácter, eso no está bien, el punto y coma sobra, por lo que la línea quedaría: Array ArrayCreaAleatorio(int linf, int lsup)
¡Un saludo!
|
|
|
En línea
|
Regístrate en
|
|
|
shulneos
Desconectado
Mensajes: 12
|
Si EnteroAleatorio está definido en una función anterior: int EnteroAleatorio(int linf, int lsup) { return linf+rand()%(lsup-linf+1); } He corregido lo del ; de la función pero me sigue tirando el mismo error: syntax error before "ArrayCreaAleatorio" Gracias por responder
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Estas compilando ese fragmento como C++, ¿Correcto?
Con la modificación que te indico avesudra debería compilar sin problemas, si no es así por favor publica el código fuente completo.
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
shulneos
Desconectado
Mensajes: 12
|
No, compilo en C, no se las diferencias que habrá porque es mi primer año de carrera pero de momento C. Publico todo el código para verlo mejor. #include <stdlib.h> #include <stdio.h>
// Lee por teclado dos enteros linf y lsup, // tales que linf<=lsup.
void LimitesLee(int * linf, int * lsup) { printf("Introduzca dos enteros para los límites inferior y superior: \n"); scanf ("%d %d",linf,lsup); while (*linf>*lsup) { printf("El limite inferior no puede ser mayor que el superior\n"); printf("Por favor, vuelva a introducir los límites\n"); scanf("%d %d",linf,lsup); } } // Imprime por pantalla los enteros linf y lsup con formato: // Limites: [linf,lsup] void LimitesImprime(int linf, int lsup) { printf("Los límites inferior y superior son:[%d,%d]\n",linf,lsup); } // Genera y devuelve un entero aleatorio entre los límites // linf y lsup. int EnteroAleatorio(int linf, int lsup) { return linf+rand()%(lsup-linf+1); } // Imprime por pantalla un entero e con formato: // Entero: e void EnteroImprime(int e) { printf("Entero: %d \n",e); }
// Crea y devuelve un array de tamaño n = lsup-linf+1 // con los números enteros comprendidos entre los límites // linf y lsup, asignados al array de forma aleatoria entre los // índices 1 y n. El array contendrá finalmente una // permutación con los números enteros comprendidos entre // dichos límites. // Req: linf<=lsup struct Array {int *v; int n;}
Array ArrayCreaAleatorio(int linf, int lsup) { Array a; a.n=lsup-linf+1; a.v=malloc(sizeof(Array)*(a.n)); for (int i=0; i<a.n;i++) a.v[i]=linf+i; for (int j=0;j<=a.n-2;j++) { int k=EnteroAleatorio(j+1,a.n-1); int aux=a.v[j]; a.v[j]=a.v[k]; a.v[k]=aux; } return a; }
int main() { char nombre[10]; int edad; printf ("Hola mundo\n"); printf ("Dime tu nombre: "); scanf ("%s",nombre); printf ("Dime tu edad: "); scanf ("%d",&edad); while(edad<0) { printf("Edad erronea, introduce edad: "); scanf("%d",&edad); } printf ("Hola %s tienes %d tacos\n",nombre,edad); int linf=0; int lsup=0; int ernd=0; int opcion=0; Array a=ArrayCreaAleatorio(linf,lsup); while (opcion!=7) { printf("1. Imprimir en pantalla los límites actuales.\n"); printf("2. Imprimir en pantalla el entero aleatorio actual.\n"); printf("3. Imprimir en pantalla el array actual.\n"); printf("4. Leer desde teclado nuevos límites.\n"); printf("5. Generar un nuevo entero aleatorio dentro de los límites actuales.\n"); printf("6. Generar un nuevo array aleatorio dentro de los limites actuales.\n"); printf("7. Salir.\n"); printf("Introducir opción (1-5):\n"); scanf("%d",&opcion); switch(opcion) { case 1:LimitesImprime(linf,lsup);break; case 2:EnteroImprime(ernd);break; case 3:break; case 4:LimitesLee(&linf,&lsup); LimitesImprime(linf,lsup);break; case 5:ernd=EnteroAleatorio(linf,lsup); EnteroImprime(ernd);break; case 6:break; case 7:break; default: printf("Error, la opción ha de estar comprendida entre 1-5\n"); } } system("pause"); return 0; }
|
|
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
struct Array {int *v; int n;};
Te faltó el ';' al final de la declaración del struct. Debajo tienes la siguiente declaración: Array ArrayCreaAleatorio(int linf, int lsup) { Array a; //...
Y bueno para declarar el tipo de retorno de la función y la variable de esta manera deberías usar lo siguiente para declarar el struct: typedef struct {int *v; int n;} Array;
Si quieres declarar el struct tal y como lo tenías antes entonces deberías declarar el tipo de retorno y la variable de esta manera: struct Array ArrayCreaAleatorio(int linf, int lsup) { struct Array a; //...
No sé si tendrás el mismo error en otras líneas, pero bueno eso ya te lo dejo a ti. Saludos.
|
|
|
En línea
|
|
|
|
shulneos
Desconectado
Mensajes: 12
|
Muchas gracias, estaba cometiendo el error al declarar la estructura, he utilizado typedef para definirla y no me ha causado problemas. Muchas gracias por todos los que me han respondido. Espero ser yo el que ayude la proxima vez. Aunque por ahora sólo sepa programar en ensamblador y Pascal.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con la compilacion...
« 1 2 »
Programación C/C++
|
Karcrack
|
13
|
11,994
|
30 Agosto 2010, 21:07 pm
por Littlehorse
|
|
|
Problema compilación con Gcc
Programación C/C++
|
R3tr0
|
3
|
4,300
|
20 Marzo 2011, 13:13 pm
por R3tr0
|
|
|
problema con la compilación con cx_Freeze
Scripting
|
yoelrodguez
|
4
|
2,544
|
9 Agosto 2015, 06:44 am
por Eleкtro
|
|
|
PROBLEMA DE COMPILACION
ASM
|
BANZER94
|
1
|
2,131
|
4 Octubre 2015, 10:39 am
por Eternal Idol
|
|
|
MOVIDO: PROBLEMA DE COMPILACION
Programación General
|
Eleкtro
|
0
|
1,406
|
3 Octubre 2015, 18:43 pm
por Eleкtro
|
|