Error el programa dejo de funcionar
Publicado por Pedro (1 intervención) el 03/10/2018 04:32:14
mi programa compila y ejecuta bien ero cuando valida una cédula que ya esta cuando voy a ingresar otra me da el error :'( no se que sera el lenguaje es C
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
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <stdio.h>
#define N 4
//Declaricon de funciones
void datos();
int validacedula();
void imprimirerror();
float mayorn();
void imprimir();
void mostrarmayores();
//Declaracion de variables globales
int cedula[N],i, posicion;
char nombre[N][50], materia[N][10];
float notas[N], mayor;
//Inicio de programa
int main()
{
printf("\t\tBienvenido\n");
datos();
mayorn();
imprimir();
mostrarmayores();
getchar();
return 0;
}
//Captura de los datos
void datos()
{ int aux1=0;
float aux2=0;
for(i=0;i<N;)
{
printf("\nIntroduzca su cedula ");
scanf("%i", &aux1);
if (validacedula(aux1)==-1){ //Validacion de la cedula se envia aux a funcion
cedula[i]=aux1;
printf("Ingrese su nombre ");
scanf("%s",nombre[i]);
printf("Ingrese su nota ");
scanf("%f", &aux2);
while ((aux2<0)||(aux2>20)){ //Validación de la nota
printf("Error debe intrducir una nota entre 0 y 20\n");
printf("Ingrese su nota ");
scanf("%f", &aux2);
}
notas[i]=aux2;
printf("Ingrese la materia ");
scanf("%s", materia[i]);
i++;
}
else {
printf("\nYa existe esa cedula\n");
imprimirerror();
i--;
}
}
}
int validacedula(int aux1){ //Se recorre el arreglo para encontrar el valor de aux
int k, posicion=-1;
for (k=0;k<N;k++){
if (cedula[k]==aux1){
posicion=k;
break;
}
}
return (posicion);
}
void imprimirerror(){ //Se imprimen los datos de la cedula que ya estaba
printf("Cedula \t\tNombre \tNotas \tMateria \n");
for (i=0;i<N;i++){
printf("%i \t\t%s \t%.0f \t%s\n",cedula[posicion],nombre[posicion],notas[posicion],materia[posicion]);
break;
}
}
float mayorn(){ //Se busca la nota mayor en el arreglo
for (i=0;i<N;i++){
if (notas[i]>mayor)
mayor=notas[i];
}
return (mayor);
}
void imprimir() {
printf("\n\t\t\tLista de datos\n");
printf("Cedula \t\tNombre \tNotas \tMateria \t\tCondicion\n");
for(i=0;i<N;i++){
if(notas[i]<10)
printf("%i \t\t%s \t%.0f \t%s \t\t(Reprobado)\n",cedula[i],nombre[i],notas[i],materia[i]);
else
printf("%i \t\t%s \t%.0f \t%s \t\t(Aprobado)\n",cedula[i],nombre[i],notas[i],materia[i]);
}
printf("\nLa mayor nota es: %.0f\n", mayor);
}
void mostrarmayores(){
printf("\n\t\t\tPersonas con notas mayores\n");
for(i=0;i<N;i++){
if (notas[i]==mayor)
printf("%i \t\t%s \t%.0f \t%s\n",cedula[i],nombre[i],notas[i],materia[i]);
}
}
Valora esta pregunta


0