elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Foros Generales
| |-+  Dudas Generales (Moderador: engel lex)
| | |-+  Coreeccion de este programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Coreeccion de este programa  (Leído 2,289 veces)
JoneDawson

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Coreeccion de este programa
« en: 4 Diciembre 2020, 13:40 pm »

Me podeis anotar los errores de esta codigo porfaa???

os adjunto aqui el enunciado de la actividad
Introducción.
Una empresa dedicada al envío de paquetes desea poner en marcha un nuevo proyecto en el que los envíos que tienen por origen y destino una determinada ciudad se realicen usando vehículos aéreos autónomos (drones).Para llevar adelante este proyecto se requiere disponer de un programa informático que ayude a la empresa a gestionar la flota de drones que ha comprado.En el desarrollo de este programa trabajarán simultáneamente varios programadores por lo que nuestra labor consistirá en implementar algunas de las funciones que componen el programa. Para facilitar el trabajo en equipo y garantizar el correcto funcionamiento del programa nos indican que debemos trabajar con las siguientes constantes:
#define MAX_LONG 25 //Longitud máxima de las cadenas de caracteres
#define MAX_DRONES 50 //Núm. Máximo de drones en la flota
Además, nos indican que los elementos que definen un dron mensajero son: el número de serie (valor entero), el modelo (cadena de caracteres), el precio de adquisición en euros, la altura en metros a la que puede volar, la autonomía de vuelo expresada en minutos, el peso máximo que puede transportar (en Kg), la fecha de la última
revisión mecánica, las coordenadas GPS del lugar de entrega y un campo denominado enReparto que indica si en el momento actual el dron está en reparto o no.
La fecha de la última revisión debe tratarse como una estructura que permita almacenar de forma independiente los campos mes y año. Asimismo las coordenadas GPS del lugar de entrega se trataran como una estructura en la que se almacenan los campos longitud (valor entre -90° y 90°), latitud (valor entre -180° y 180°) y altitud.
En base a esta información y con el fin de optimizar la multitarea trabajaremos con las siguientes estructuras de datos:
struct tipoFecha{
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)
};
Es fundamental guardar una copia de la solución de cada ejercicio pues, en la mayoría de los casos, el código implementado se utilizará en la resolución de los siguientes.


Ejercicio 1. Definición y uso de estructuras.
Escribir un programa en C que, tras definir las constantes del programa y declarar el tipo
struct tipoDron lea y muestre por pantalla los datos de un dron. Para ello:
a) Declarare e inicialice una variable del tipo struct tipoDron. Para asignar valores a los campos de la variable (inicializar) se debe implementar una función denominada leerDatosDron que tendrá el siguiente encabezado:
struct tipoDron leerDatosDron(void);
Esta función, solicitará al usuario los datos que identifican un determinado dron. Tenga presente que las coordenadas relativas al punto de entrega solo deben introducirse si el dron está en reparto y que es necesario verificar que las coordenadas introducidas están en el rango correcto (latitud debe tener un valor comprendido entre -90 y 90; longitud debe tener un valor comprendido entre -180 y 180).
b) Muestre por pantalla los datos del dron introducidos en el apartado anterior. Para ello se debe implementar la función:
void mostrarDatosDron (struct tipoDron dron);
Esta función recibe como parámetro por valor una variable de tipo struct tipoDron y muestra por pantalla el valor de sus características téncias. Además, si el dron está realizando un reparto, mostrará las coordenadas del punto de entrega..
A continuación, se muestran dos ejemplos del resultado obtenido tras ejecutar la función
mostrarDron. Como se puede observar, en ambos casos se omite si el dron está o no en reparto, pero en el segundo caso, al tratarse de un dron que está realizando una entrega, se indican las coordenadas del lugar de entrega.
Ejemplo:
Los datos del dron son:
Num de Serie: 6
Modelo: Modelo3
Precio 2686.00 euros
Altura: 109.00 m.
Autonomia 255 min
Peso: 2.8 Kg
Fecha de la ultima revisión: 4/2020
Los datos del dron son:
Num de Serie: 61
Modelo: Modelo10
Precio 3892.00 euros
Altura: 114.00 m.
Autonomia 119 min
Peso: 4.93 Kg
Fecha de la ultima revisión: 9/2020
Coordenadas del punto de entrega:
Las coordenadas del punto de entrega son: 79.7600, 39.5700, 162.5500

Ejercicio 2. El objetivo de éste y los siguientes programas es escribir un programa en C que permita gestionar la flota de drones de la empresa que nos ha contratado. Para ello, el programa a desarrollar debe trabajar con un vector de drones(1) (flota)en el que se podrán almacenar como máximo 50 (MAX_DRONES) drones distintos. Dado que la flota puede contener menos drones, resulta imprescindible almacenar el número de drones que en cada momento la componen (numDrones).
El programa a desarrollar en este ejercicio constará de un menú con las siguientes opciones:
*****************************************
MENÚ PRINCIPAL.
*****************************************
1. AÑADIR DRON
2. MOSTRAR FLOTA
3. MOSTRAR DRONES EN REPARTO
0. Salir
Menú principal.
Tras mostrar el menú, el programa preguntará al usuario qué opción quiere ejecutar (1, 2 ó 3), se ejecutará dicha opción y se volverá a mostrar el menú. Este ciclo se repetirá hasta que el usuario seleccione la opción 0 (SALIR). Si la opción seleccionada es la 1 (AÑADIR DRON), se debe comprobar que es posible añadir más drones a nuestra
flota (no se ha superado el número máximo). En caso afirmativo se añadirán los datos relativos al nuevo dron y se actualizará el número de elementos almacenados en el vector. Para leer los datos relativos al nuevo dron se usará la función leerDatosDron implementada en el ejercicio 1. Si la opción seleccionada es la 2 (MOSTRAR FLOTA), se mostrará por pantalla el listado de todos los drones pertenecientes a nuestra flota. Para ello se debe implementar una nueva función denominada mostrarFlota cuyos parámetros serán el vector de drones y, el número de drones que componen la flota. Para mostrar los datos de un determinado dron se usará la función mostrarDron implementada en el ejercicio 1. Si la opción seleccionada es la 3 (MOSTRAR DRONES EN REPARTO ) el control del programa pasará a la función
void mostrarDronesEnReparto (struct tipoDron flota[], int nDrones) la cual se encargará de mostrar los drones que en ese momento están en reparto.
Notas:
(1)A la hora de realizar este ejercicio la variable de tipo struct tipoDron declarada en el ejercicio 1 se debe
borrar. En este ejercicio sólo se usa el vector de estructuras.
Para detener la ejecución del programa hasta pulsar una tecla puede usar la sentencia system("PAUSE");
Para borrar el contenido de la pantalla puede usar la sentencia system("cls");

Ejercicio 3.
Amplíe el programa anterior para que junto a las opciones ya indicadas, muestre también un listado de los drones cuya última revisión mecánica tuvo lugar hace 6 o más meses. Para ello, añada la opción “4. MOSTRAR DRONES A REVISAR” al menú principal e implemente el código necesario para que, al seleccionar esta opción se solicite la fecha actual (mes y año) y se muestre por pantalla los datos de todos los drones que cumplen el requisito impuesto. Así, si la fecha actual es Noviembre de 2020, el programa mostrará por pantalla los datos de todos los drones para los que la última revisión mecánica se realizó con anterioridad a Mayo de 2020. Si la fecha actual fuera Abril de 2020, el programa debe mostrar los datos de todos los drones para los que la última revisión se realizó antes de Octubre de 2019.
Para la resolución de este problema se debe implementar una función denominada mostrarDronesARevisar que reciba como parámetros el vector de drones y el número de drones que integran la flota, solicite la fecha actual y finalmente muestre por consola los datos de todos los drones cuya última revisión mecánica tuvo lugar hace 6 o más meses.

Nota: La variable en la que se almacena la fecha actual debe ser una variable de tipo struct tipoFecha.


Código
  1. [#include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_LONG 25 //tamaño maximo
  5. #define MAX_DRONES 50 //tamaño maximo de drones
  6.  
  7.  
  8. /* Declaramos las estructuras*/
  9. struct tipoFecha{ //registra cuando fue la ultima inspeccion
  10. int mes;
  11. int year;
  12. };
  13. struct tipoCoordenadaGPS{
  14. float latitud;
  15. float longitud;
  16. float altitud;
  17. };
  18. struct tipoDron {
  19. int numSerie;
  20. char modelo[MAX_LONG];
  21. float precio; //Precio de coste (en euros)
  22. float altura; //Altura a la que puede volar (en metros)
  23. int autonomia; //Autonomía de Vuelo (en minutos)
  24. float pesoMax; //Peso máximo que puede transportar
  25. struct tipoFecha fechaUltimaRev; //Fecha de la ultima revisión (mes, year)
  26. struct tipoCoordenadaGPS ptoEntrega;//Coordenadas del lugar de entrega
  27. int enReparto; //Identifica si el dron está en reparto o no)
  28. };
  29.  
  30. //Declaraciones de funciones
  31. void  mostrarDronesARevisar(struct tipoDron flota[MAX_DRONES], int numdrones);
  32. void mostrarDatosDron (struct tipoDron flota[MAX_DRONES], int numdrones);
  33. struct tipoDron leerDatosDron(void);
  34. void mostrarFlota(struct tipoDron flota[MAX_DRONES],int numdrones);
  35. void mostrarDronesEnReparto ( struct tipoDron flota[MAX_DRONES], int numdrones);
  36.  
  37. //funcion main
  38. int main(int argc, char *argv[]) {
  39. struct tipoDron dron;
  40.  
  41. struct tipoDron flota[MAX_DRONES];
  42. int orden,numdrones=0;
  43. int menu;
  44.  
  45. do{
  46. printf("*****************************************\n");
  47.                printf("MENU PRINCIPAL.\n");
  48.                printf("*****************************************\n");
  49. printf("Anadir dron (1)\n");
  50. printf("Mostrar flota (2)\n");
  51. printf("mostrar drones en reparto(3)\n");
  52. printf("mostrar drones a revisar (4)\n");
  53. printf("salir (0)\n");
  54. scanf("%i",&orden);
  55. //Pedimos los datos segun el numero
  56. switch(menu){
  57.  
  58.     case 1:
  59. dron =leerDatosDron();
  60. printf("\n");
  61. flota[numdrones]=dron;
  62. numdrones++;
  63.     break;
  64.  
  65.     case 2:
  66.     mostrarFlota(flota, numdrones);
  67.     break;
  68.  
  69.     case 3:
  70.    mostrarDronesEnReparto(flota, numdrones);
  71.    break;
  72.  
  73. case 4:
  74. mostrarDronesARevisar(flota, numdrones);
  75. break;
  76.    case 0:
  77. return 0;
  78.        break;
  79.     }
  80.  
  81.    }while(menu!=0)&&(numdrones<MAX_DRONES);
  82.  
  83. return 0;
  84. }
  85.  
  86. //Funcion de tipo structura para pedir los datos del dron
  87. struct tipoDron leerDatosDron(void){
  88.  
  89. struct tipoDron dron;
  90.  
  91. printf("Por favor introduzca el numero de serie del dron  :");
  92. scanf("%i",&dron.numSerie);
  93. printf("Por favor introduzca el modelo del dron:");
  94. scanf("%s",&dron.modelo);
  95. printf("Por favor introduzca elprecio del dron:");
  96. scanf("%f",&dron.precio);
  97. printf("Por favor introduzca la altura del dron:");
  98. scanf("%f",&dron.altura);
  99. printf("Por favor introduzca la autonomia del dron:");
  100. scanf("%i",&dron.autonomia);
  101. printf("Por favor introduzca el peso del dron :");
  102. scanf("%f",&dron.pesoMax);
  103. printf("Por favor introduzca el mes de la ultima revision :");
  104. scanf("%i",&dron.fechaUltimaRev.mes);
  105. printf("Por favor introduzca el year de la ultima revision :");
  106. scanf("%i",&dron.fechaUltimaRev.year);
  107. printf("Por favor indique si el dron esta en reparto (si=1)(no=0):  ");
  108. scanf("%i",&dron.enReparto);
  109.  
  110. if(dron.enReparto==1){
  111.  
  112. printf("introduzca la altitud del dron: ");
  113. scanf("%f",&dron.ptoEntrega.altitud);
  114.  
  115. do{
  116. printf("introduzca la latitud del dron: ");
  117. scanf("%f",&dron.ptoEntrega.latitud);
  118.     }while(dron.ptoEntrega.latitud<-90||dron.ptoEntrega.latitud>90);
  119.  
  120. do{
  121. printf("introduzca la longitud del dron: ");
  122. scanf("%f",&dron.ptoEntrega.longitud);
  123. }while(dron.ptoEntrega.longitud<-180||dron.ptoEntrega.longitud>180);
  124.  
  125. }
  126. return dron;
  127. }
  128.  
  129. void  mostrarDronesARevisar(struct tipoDron flota[MAX_DRONES], int numdrones){
  130.  
  131. int i, mes, year ;
  132. printf("Por favor introduzca el mes en el que estas actualmente");
  133. scanf("%i",&mes);
  134. printf("Por favor introduzca el año en el que estas actualmente");
  135. scanf("%i",&year);
  136.  
  137. for(i=0;i<numdrones;i++){
  138. if((mes+24)-(flota[i].fechaUltimaRev.mes+12)>6|| (year-flota[i].fechaUltimaRev.year)>2){
  139. printf("el dron con numero de serie %i y modelo  %s necesita una revision \n", flota[i].numSerie,flota[i].modelo);
  140. }
  141.  
  142. }
  143.  
  144. return ;
  145. }
  146.  
  147. void mostrarDatosDron (struct tipoDron flota[MAX_DRONES],int numdrones){
  148. int contador, numserie,i;
  149. printf("Por favor introduzca el numero de serie del dron por el cual quieres ver los datos ");
  150. scanf("%i",&numserie);
  151.  
  152. for(i=0;i<numdrones;i++){
  153. contador++;
  154. if (flota[i].numSerie==numserie){
  155. i=numdrones+1;
  156.     }
  157.    }
  158.  
  159. contador=contador-1;
  160. printf("El numero de serie del dron es : %i \n",flota[contador].numSerie);
  161. printf("El modelo del dron es : %s \n",flota[contador].modelo);
  162. printf("El precio del dron es :%f \n",flota[contador].precio);
  163. printf("La altura maxima del dron es:%f \n",flota[contador].altura);
  164. printf("La autonomia del dron es:%i \n",flota[contador].autonomia);
  165. printf("El peso maximo que puede llevar el dron es:%f \n",flota[contador].pesoMax);
  166. printf("La ultima revision fue el : %i/%i \n",flota [contador].fechaUltimaRev.mes,flota[contador].fechaUltimaRev.year);
  167.  
  168. if(flota[contador].enReparto==1){
  169. printf("la latitud del dron es :%f \n",flota[contador].ptoEntrega.latitud);
  170. printf("la altitud del dron es:%f \n",flota[contador].ptoEntrega.altitud);
  171. printf("la longitud del dron es :%f \n",flota[contador].ptoEntrega.longitud);
  172. }
  173.  
  174. return ;
  175. }
  176.  
  177. void mostrarFlota(struct tipoDron flota[MAX_DRONES],int numdrones){
  178. int i,respuesta,numserie;
  179.  
  180. for(i=0;i<numdrones;i++){
  181. printf("El dron con numero de serie %i modelo %s\n",flota[i].numSerie,flota[i].modelo);
  182. }
  183.  
  184. printf("Deseas saber los datos de alguno de los drones si(1) o no(otro)?");
  185. scanf("%i",&respuesta);
  186.  
  187. if (respuesta==1){
  188. mostrarDatosDron (flota, numdrones);
  189. }
  190.  
  191. return ;
  192. }
  193.  
  194. void mostrarDronesEnReparto ( struct tipoDron flota[MAX_DRONES], int numdrones) {
  195. int i;
  196. for(i=0;i<numdrones;i++){
  197. if(flota[i].enReparto==1){
  198. printf("El dron con numero de serie %i y modelo %s esta en reparto\n", flota[i].numSerie, flota[i].modelo);
  199. }
  200. }
  201.  
  202. return ;
  203. }
  204. /code]
  205.  
  206.  


« Última modificación: 5 Diciembre 2020, 09:41 am por JoneDawson » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayudita con este programa « 1 2 »
Programación Visual Basic
ThonyMaster 17 5,250 Último mensaje 2 Diciembre 2008, 16:48 pm
por seba123neo
Qué programa es este??? (Modelado 3D)
Diseño Gráfico
BlackSr 6 4,150 Último mensaje 11 Junio 2009, 17:50 pm
por BlackSr
ayuda con este programa
Programación C/C++
daxelmejor 1 2,394 Último mensaje 13 Mayo 2010, 16:00 pm
por Akai
Intentar hacer este programa con este protocolo de comunicación
.NET (C#, VB.NET, ASP)
Meta 0 1,625 Último mensaje 6 Diciembre 2016, 04:12 am
por Meta
Programa C++ Tengo una duda con respecto a este programa. « 1 2 »
Programación C/C++
Estudiante000000 16 4,589 Último mensaje 22 Noviembre 2018, 03:29 am
por Estudiante000000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines