C/Visual C - AYUDA URGENTE PROGRAMA EN C++

 
Vista:
sin imagen de perfil

AYUDA URGENTE PROGRAMA EN C++

Publicado por Christian Marcelo (3 intervenciones) el 10/09/2014 02:47:24
Hola, soy principiante en este programa, me da este error, no se a que se refiere, ni como puedo solucionarlo, adjunto mi codigo y error. saludos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
#define MAX_ALFABETO 50 //cambiar arreglo por  palabra matriz
#define MAX_ESTADOS 50
#define MAX_ENTRADAS 80
 
int verificar(char arreglo_entrada[], char alfabeto[]){
	int distintos, aprobados=0, i, j;
	for (i=0; i<strlen(arreglo_entrada); i++){
		distintos=0;
		for (j=0; j<strlen(alfabeto); j++){
			if (arreglo_entrada[i]!=alfabeto[j]){
				distintos++;
			}
			else {
				aprobados++;
			}
		if (distintos==strlen(alfabeto)){
			return 0;
		}
		}
	}
	if (aprobados==strlen(arreglo_entrada)){
		return 1;
	}
}
 
int procesar(char arreglo_entrada[], char alfabeto[], int estado_inicial, int arreglo[][], char estados_finales[]){
	int i;
	int posicion_letra;
	int posicion_final;
	int resultado;
 
	for (i=0; i<strlen(arreglo_entrada); i++){
		for (i=0; i<strlen(alfabeto); i++){
			if (arreglo_entrada[i]==alfabeto[i]){
				posicion_letra=i;
			}
		}
		if (i=0){
			posicion_final=arreglo[estado_inicial][posicion_letra];
		}
		else {
			posicion_final=arreglo[posicion_final][posicion_letra];
		}
	}
 
	for (i=0; i<strlen(estados_finales); i++){
		if (estados_finales[i]==posicion_final) {
			return 1;
		}
		else {
			return 0;
		}
	}
 
	}
 
main(int argc, char *argv[]){
	FILE *archivo;
	char alfabeto[MAX_ALFABETO];
	int  numero_estados;
	int  estado_inicial;
	int	 cant_estados_finales;
	char estados_finales[MAX_ESTADOS];
	char arreglo[MAX_ESTADOS][MAX_ALFABETO];
	int  i,j;
 
	int cantidad_cadenas;
	char arreglo_entrada[MAX_ENTRADAS];
	int veces=0;
 
	if (argc!=2) {
		printf("Uso correcto: %s nombre-archivo-automata\n", argv[0]);
		exit(EXIT_FAILURE);
	}
 
	archivo = fopen(argv[1], "r");
 
	if (archivo==NULL) {
	   printf("Error abriendo el archivo %s\n", argv[1]);
	   exit(EXIT_FAILURE);
   }
	fscanf(archivo, "%s", alfabeto);
	fscanf(archivo, "%d", &numero_estados);
	fscanf(archivo, "%d", &estado_inicial);
	fscanf(archivo, "%d", &cant_estados_finales);
 
	printf("EL alfabeto es: %s\n", alfabeto);
	printf("El numero de estados totales es: %d\n", numero_estados);
	printf("EL estado inicial es: %d\n", estado_inicial);
	printf("El numero de estados finales de este archivo es: %d\n", cant_estados_finales);
 
	printf("Estados finales: \n");
	for (i=0; i<cant_estados_finales; i++){
				fscanf(archivo, "%s", &estados_finales[i]);
				estados_finales[i]=(estados_finales[i]-48);
				printf("%d\n", estados_finales[i]);
	}
 
	for (i=0; i<numero_estados; i++){
			for (j=0; j<strlen(alfabeto); j++){
					fscanf(archivo, "%s", &arreglo[i][j]);
					arreglo[i][j]=(arreglo[i][j]-48);
					printf("%d", arreglo[i][j]);
			}
			printf("\n");
	}
	printf("Primera letra del alfabeto: %c\n", alfabeto[0]);
	printf("Ingrese cantidad de cadenas a verificar: ");
	scanf("%d", &cantidad_cadenas);
 
	while (veces<cantidad_cadenas){
		printf("Ingrese cadena: ");
		scanf("%s", arreglo_entrada);
		printf("El arreglo es: %s\n", arreglo_entrada);
		veces++;
		printf("El arreglo fue:");
 
		if (verificar(arreglo_entrada,alfabeto)==1){
			procesar(arreglo_entrada,alfabeto, estado_inicial,arreglo, estados_finales);
		}
		else{
			printf("ERROR");
		}
		char arreglo_entrada[MAX_ENTRADAS]= {0};
	}
 
 
}

1
2
3
4
5
6
7
8
9
christian@christian-RV410-RV510-S3510-E3510:~/Escritorio$ gcc nuevo.c -o nuevo
nuevo.c:31:79: error: array type has incomplete element type
 int procesar(char arreglo_entrada[], char alfabeto[], int estado_inicial, int arreglo[][], char estados_finales[]){
                                                                               ^
nuevo.c: In function ‘main’:
nuevo.c:124:4: error: type of formal parameter 4 is incomplete
    procesar(arreglo_entrada,alfabeto, estado_inicial,arreglo, estados_finales);
    ^
christian@christian-RV410-RV510-S3510-E3510:~/Escritorio$

SALUDOS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

AYUDA URGENTE PROGRAMA EN C++

Publicado por Tom (619 intervenciones) el 10/09/2014 09:07:58
Eso es porque no puedes declarar un array bidimensional sin especificar la primera dimensión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA URGENTE PROGRAMA EN C++

Publicado por Chema (234 intervenciones) el 10/09/2014 11:20:44
Vas por buen camino , serás buen programador.
#define MAX_ALFABETO 50 //cambiar arreglo por palabra matriz
#define MAX_ESTADOS 50
#define MAX_ENTRADAS 80

Debes repasar el tema del uso de punteros y matrices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar