C/Visual C - Corregir este codigo

 
Vista:
sin imagen de perfil
Val: 5
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Corregir este codigo

Publicado por joneDawson (3 intervenciones) el 04/12/2020 14:42:16
Alguien me puede corregir este codigo para ver si hay algo que lo he hecho mal?
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
[#include <stdio.h>
#include <stdlib.h>
 
#define MAX_LONG 25 //tamaño maximo
#define MAX_DRONES 50 //tamaño maximo de drones
 
 
/* Declaramos las estructuras*/
struct tipoFecha{ //registra cuando fue la ultima inspeccion
	int mes;
	int year;
};
struct tipoCoordenadaGPS{
	float latitud;
	float longitud;
	float altitud;
};
struct tipoDron {
	int numSerie;
	char modelo[MAX_LONG];
	float precio; //Precio de coste (en euros)
	float altura; //Altura a la que puede volar (en metros)
	int autonomia; //Autonomía de Vuelo (en minutos)
	float pesoMax; //Peso máximo que puede transportar
	struct tipoFecha fechaUltimaRev; //Fecha de la ultima revisión (mes, year)
	struct tipoCoordenadaGPS ptoEntrega;//Coordenadas del lugar de entrega
	int enReparto; //Identifica si el dron está en reparto o no)
};
 
//Declaraciones de funciones
void  mostrarDronesARevisar(struct tipoDron flota[MAX_DRONES], int numdrones);
void mostrarDatosDron (struct tipoDron flota[MAX_DRONES], int numdrones);
struct tipoDron leerDatosDron(void);
void mostrarFlota(struct tipoDron flota[MAX_DRONES],int numdrones);
void mostrarDronesEnReparto ( struct tipoDron flota[MAX_DRONES], int numdrones);
 
//funcion main
int main(int argc, char *argv[]) {
struct tipoDron dron;
 
struct tipoDron flota[MAX_DRONES];
int orden,numdrones=0;
int menu;
 
	do{
		printf("*****************************************\n");
                printf("MENU PRINCIPAL.\n");
                printf("*****************************************\n");
		printf("Anadir dron (1)\n");
		printf("Mostrar flota (2)\n");
		printf("mostrar drones en reparto(3)\n");
		printf("mostrar drones a revisar (4)\n");
		printf("salir (0)\n");
		scanf("%i",&orden);
		//Pedimos los datos segun el numero
		switch(menu){
 
	    	case 1:
				dron =leerDatosDron();
				printf("\n");
				flota[numdrones]=dron;
				numdrones++;
	    		break;
 
	    	case 2:
	    		mostrarFlota(flota, numdrones);
	    		break;
 
	    	case 3:
			    mostrarDronesEnReparto(flota, numdrones);
			    break;
 
			case 4:
				mostrarDronesARevisar(flota, numdrones);
				break;
		    case 0:
				return 0;
	    	    break;
    	}
 
    }while(menu!=0)&&(numdrones<MAX_DRONES);
 
	return 0;
}
 
//Funcion de tipo structura para pedir los datos del dron
struct tipoDron leerDatosDron(void){
 
	struct tipoDron dron;
 
	printf("Por favor introduzca el numero de serie del dron  :");
	scanf("%i",&dron.numSerie);
	printf("Por favor introduzca el modelo del dron:");
	scanf("%s",&dron.modelo);
	printf("Por favor introduzca elprecio del dron:");
	scanf("%f",&dron.precio);
	printf("Por favor introduzca la altura del dron:");
	scanf("%f",&dron.altura);
	printf("Por favor introduzca la autonomia del dron:");
	scanf("%i",&dron.autonomia);
	printf("Por favor introduzca el peso del dron :");
	scanf("%f",&dron.pesoMax);
	printf("Por favor introduzca el mes de la ultima revision :");
	scanf("%i",&dron.fechaUltimaRev.mes);
	printf("Por favor introduzca el year de la ultima revision :");
	scanf("%i",&dron.fechaUltimaRev.year);
	printf("Por favor indique si el dron esta en reparto (si=1)(no=0):  ");
	scanf("%i",&dron.enReparto);
 
	if(dron.enReparto==1){
 
		printf("introduzca la altitud del dron: ");
		scanf("%f",&dron.ptoEntrega.altitud);
 
		do{
			printf("introduzca la latitud del dron: ");
			scanf("%f",&dron.ptoEntrega.latitud);
    	}while(dron.ptoEntrega.latitud<-90||dron.ptoEntrega.latitud>90);
 
		do{
			printf("introduzca la longitud del dron: ");
			scanf("%f",&dron.ptoEntrega.longitud);
		}while(dron.ptoEntrega.longitud<-180||dron.ptoEntrega.longitud>180);
 
	}
	return dron;
}
 
void  mostrarDronesARevisar(struct tipoDron flota[MAX_DRONES], int numdrones){
 
	int i, mes, year ;
	printf("Por favor introduzca el mes en el que estas actualmente");
	scanf("%i",&mes);
	printf("Por favor introduzca el año en el que estas actualmente");
	scanf("%i",&year);
 
	for(i=0;i<numdrones;i++){
		if((mes+24)-(flota[i].fechaUltimaRev.mes+12)>6|| (year-flota[i].fechaUltimaRev.year)>2){
			printf("el dron con numero de serie %i y modelo  %s necesita una revision \n",
 flota[i].numSerie,flota[i].modelo);
		}
 
	}
 
	return ;
}
 
void mostrarDatosDron (struct tipoDron flota[MAX_DRONES],int numdrones){
	int contador, numserie,i;
	printf("Por favor introduzca el numero de serie del dron por el cual quieres ver los datos ");
	scanf("%i",&numserie);
 
	for(i=0;i<numdrones;i++){
		contador++;
		if (flota[i].numSerie==numserie){
			i=numdrones+1;
	     }
    }
 
	contador=contador-1;
	printf("El numero de serie del dron es : %i \n",flota[contador].numSerie);
	printf("El modelo del dron es : %s \n",flota[contador].modelo);
	printf("El precio del dron es :%f \n",flota[contador].precio);
	printf("La altura maxima del dron es:%f \n",flota[contador].altura);
	printf("La autonomia del dron es:%i \n",flota[contador].autonomia);
	printf("El peso maximo que puede llevar el dron es:%f \n",flota[contador].pesoMax);
	printf("La ultima revision fue el : %i/%i \n",flota
        [contador].fechaUltimaRev.mes,flota[contador].fechaUltimaRev.year);
 
	if(flota[contador].enReparto==1){
		printf("la latitud del dron es :%f \n",flota[contador].ptoEntrega.latitud);
		printf("la altitud del dron es:%f \n",flota[contador].ptoEntrega.altitud);
		printf("la longitud del dron es :%f \n",flota[contador].ptoEntrega.longitud);
	}
 
	return ;
}
 
void mostrarFlota(struct tipoDron flota[MAX_DRONES],int numdrones){
	int i,respuesta,numserie;
 
	for(i=0;i<numdrones;i++){
	printf("El dron con numero de serie %i modelo %s\n",flota[i].numSerie,flota[i].modelo);
	}
 
	printf("Deseas saber los datos de alguno de los drones si(1) o no(otro)?");
	scanf("%i",&respuesta);
 
	if (respuesta==1){
	mostrarDatosDron (flota, numdrones);
	}
 
 return ;
}
 
void mostrarDronesEnReparto ( struct tipoDron flota[MAX_DRONES], int numdrones) {
	int i;
	for(i=0;i<numdrones;i++){
		if(flota[i].enReparto==1){
			printf("El dron con numero de serie %i y modelo %s esta en reparto\n", flota[i].numSerie, flota[i].modelo);
		}
	}
 
	return ;
}
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
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Corregir este codigo

Publicado por Rodrigo (119 intervenciones) el 04/12/2020 17:17:44
No he leido aun el programa, pero dado que no lo indicas esto:

Hay algun error de compilacion? de ejecucion?
Hay algo que el programa hace que no calza con lo que se espera que haga?

(supongo que el "[" que aparece al principio del programa no es parte de tu programa, sino que se agrego al copiarlo aqui)
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
sin imagen de perfil
Val: 5
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Corregir este codigo

Publicado por Jonedawson (3 intervenciones) el 04/12/2020 18:34:55
Buenas,

No mi programa ejecuta y compila bien ,el problema es que no se si mi código está bien programado o no , dado que mi profesor me ha dicho que puede dar el caso de que compila pero no está bien programado.Pues quería saber si el código es correcto y eficiente .
Le voy a adjuntar lo que me pide el ejercicio .
Pd:exacto el [ no forma parte de mi código .
Gracias
6DA4EE53-C1DD-4ED8-BF2C-A0592529C805
F8C72129-1D6A-4342-B6EF-C949A6914E24
35DE0F2A-1CBF-4B75-8108-B0DF877C50D8
12C92C52-D834-41D0-A563-E6A90CE4B420
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
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Corregir este codigo

Publicado por Rodrigo (119 intervenciones) el 04/12/2020 20:14:03
La funcion mostrarDatosDron no es exactamente la que te piden.
Te dicen que tiene que recibir 1 dron, pero le estas pasando el arreglo completo y el indice, por lo que la peticion y busqueda que estas haciendo no corresponde hacerla dentro de esa funcion.
Parece que la logica no esta considerando el que se ingrese un numero de serie que no exista.
Tampoco se esta considerando que 2 drones distintos tengan el mismo numero de serie, pero no parece ser algo que te pidan chequear.

Los return al final de una funcion void los pueden eliminar, son superfluos.
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

Corregir este codigo

Publicado por joneDawson (3 intervenciones) el 05/12/2020 10:10:07
muchas gracias,entonces como seria la funcion mostrarDatosDron?
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
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Corregir este codigo

Publicado por Rodrigo (119 intervenciones) el 05/12/2020 17:56:10
Recibe un dron y muestra los campos dentro, considerando cuando esta o no en reparto.
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