Bueno, tengo un problema. Me sale el error del título y buscando por internet me he enterado de que es porque a arrays multidimensionales no se les puede poner dos indices indefinidos.
Al caso, alguna manera de utilizarlo sin repetir le código 10 veces, una por cada índice?
Aquí el código que tengo:
/*Creado por: P22 Para: Scenebeta*/ #include <stdio.h> #include <stdlib.h> int main(){ /*Definición de variables auxiliares*/ int nrestau; int i; char continuar = 'Y'; int repetir = 0; /*Definición de arrays*/ int ganancias[11][9]; /*ganancias de cada restaurante*/ int sumatotal[9]; /*Suma de ganancias de cada mes en cada restaurante*/ char nombres[9][9]; /*Nombre de cada restaurante*/ /*Declaraciones de funciones*/ void pedirvalores(int a, int b[11][9], char c[9][9], int sumatotal[9]); void sacarsalida(int a, char c[9][9], int d[9]); printf("Bienvenido. Este programa te ayudara a calcular ganancias brutas\n"); do{ do{ printf("Por favor, introduce el numero de restaurantes con los que deseas hacer calculos (0 = parar, de 1 a 10 para continuar): "); scanf("%d", nrestau); if (nrestau > 10 || nrestau < 0) repetir = 1; } while(repetir != 0); if (nrestau == 0) break; pedirvalores(nrestau, ganancias, nombres, sumatotal); sacarsalida(nrestau, nombres, sumatotal); printf("\n\nDeseas continuar? (Y/N): "); scanf("%c", continuar); } while(toupper(continuar) == 'Y' ); printf("\n\n\nHasta pronto, espero haberte sido util"); getchar(); return 0; } void pedirvalores(int a, int b[][], char c[][], int d[]){ int i, y; char j; printf("\n\nHola! Soy la funcion pedirvalores \nEstoy aquí para recibir datos y almacenarlos"); printf("\nEn primer lugar, me vas a indicar el nombre de cada restaurante:\n\n"); /*El error empieza aquí*/ for (i = 0; i < a; i++){ for (y = 0; y < 10; y++){ j = getchar(); /*Aquí el error*/ c[i][y] = j; /*Error*/ if (j == '\n'){ y = 9; } } } return; } void sacarsalida(int a, char c[][], int d[]){ printf("Hola mundo"); return; }
Es para los tutoriales. Vuestro nombre aparecerá en los agradecimientos si me ayudais exitosamente.
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Prueba que cuando declares la
Prueba que cuando declares la funcion(arriba del todo)y cuando la declares para usarla ponerle a los arrays los valores maximos, no estoy seguro, pero me parece que es porque al declarar la funcion arriba le das limites a los arrays y abajo los dejas vacios...
No es por eso
Creo que no has comprendido el problema. Los arrays no están relacionados con las funciones. El problema está en la línea inferior al getchar. El error consiste en que al menos uno de los índices tiene que ser definido. Yo digo si alguien es capaz de ayudarme a solucionar el código creando alguna pieza para el mismo...
Gracias de todos modos.
Se te ocurre otra cosa?
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Cagada mia. He compilado en
Cagada mia. He compilado en Code::Blocks ese codigo y me da error en las funciones void pedirvalores y void sacarsalida:
Prueba cambiandolas por esto:
Y dentro de la funcion pedirvalores cambia todas las variables d por sumatotal.
No me has entendido
El problema está aquí:
Como puedes ver, el array c[i][y]; está con índices indefinidos, o lo que es lo mismo, que los índices son variables y no números explicitos. Lo otro que me has dicho no influye, pues no tiene índices para permitir que los arrays pasados tengan un tamaño cualquiera.
Ahora, la pregunta es si me puedes ayudar a cambiar el índice de alguna de ellas por un número sin tener que repetir la misma pieza de código 10 veces...
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Aver, a mi esa linea no me da
Aver, a mi esa linea no me da ningun error al compilarlo en Code::Blocks, ¿Que compilador estás usando?
Y cuando uses while no uses do, porque muchas veces hace el codigo algo complicado de leer(si estas acostumbrado puede que no sea asi, pero a mi se me hace algo dificil...):
Lleva cuidado al usar los scanf, se usan asi:
scanf("%i", &var_int);
y no como tu lo usas:
scanf("%c", continuar);
Te falta el operador
&
antes del nombre de la variable.Hay varios errores de esos.
Lo acabo de provar con varios cambios y parece que funciona bien, te dejo el codigo:
Solo he arreglado varios scanf y poco mas.
Te recomiendo tambien que cuando declares funciones lo hagas en modo global, puesto que si te hacen falta llamarlas desde otro sitio no podrás.
Muchisimas gracias
a mi en Dev-C++ el error me salía donde dije, pero poniendo lo que tu dices funciona bien. De todos modos, Dev-C++ lleva dandome problemas desde que lo instalé (ayer ya ni compilaba), y al instalar code blocks todo funcionó bien
Saludos y muchas gracias
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
De nada, porcierto, Dev-C++
De nada, porcierto, Dev-C++ esta abandonado(por lo que yo se)as´i que mejor quedate en Code::Blocks, xD.
O.o
En serio está abandonado??? Pues me voy a ver obligado a quedarme, aunque pensaba hacerlo estuviese parado o no :P
El primer proyecto si
Pero hace poco sacaron un nuevo wnDev-C++, su pagina oficial