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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con estructura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con estructura  (Leído 2,960 veces)
Mudkipz

Desconectado Desconectado

Mensajes: 112


Hospice


Ver Perfil
Ayuda con estructura
« en: 19 Noviembre 2010, 04:48 am »

Hola a todos,

bueno, tengo que leer los siguientes datos:

    año
    modelo
    marca
    costo de automovil tipo sedan
    costo de automovil tipo pick-up
    costo de automovil tipo deportivo

pero tengo que usar una estructura y leer esos datos 3 veces, osea para 3 automoviles diferentes.

tengo este codigo pero se me hace demasiado largo, y queria ver si hay alguna forma de hacerlo mas corto:

Código
  1. #include<stdio.h>
  2. struct Auto{
  3. int año;
  4.        float sedan, pickup, deportivo;
  5. char modelo[100];
  6. char marca[100];
  7. }c1, c2, c3;
  8. int main(){
  9. char buffer[100];
  10. //datos del primer auto
  11. printf("Introduzca los datos del primer auto:\nanio: ");
  12. fgets(buffer,sizeof(buffer),stdin);
  13. sscanf(buffer, "%d", &c1.año);
  14. printf("Introduzca el modelo: ");
  15. fgets(c1.modelo,sizeof(c1.modelo),stdin);
  16. printf("Introduzca la marca: ");
  17. fgets(c1.marca,sizeof(c1.marca),stdin);
  18. printf("Introduzca los precios para sedan, pickup, deportivo:\n");
  19. fgets(buffer,sizeof(buffer),stdin);
  20. sscanf(buffer,"%f",&c1.sedan);
  21. fgets(buffer,sizeof(buffer),stdin);
  22. sscanf(buffer,"%f",&c1.pickup);
  23. fgets(buffer,sizeof(buffer),stdin);
  24. sscanf(buffer,"%f",&c1.deportivo);
  25. //datos del segundo auto
  26. printf("Introduzca los datos del segundo auto:\nanio: ");
  27. fgets(buffer,sizeof(buffer),stdin);
  28. sscanf(buffer, "%d", &c2.año);
  29. printf("Introduzca el modelo: ");
  30. fgets(c1.modelo,sizeof(c2.modelo),stdin);
  31. printf("Introduzca la marca: ");
  32. fgets(c1.marca,sizeof(c2.marca),stdin);
  33. printf("Introduzca los precios para sedan, pickup, deportivo:\n");
  34. fgets(buffer,sizeof(buffer),stdin);
  35. sscanf(buffer,"%f",&c2.sedan);
  36. fgets(buffer,sizeof(buffer),stdin);
  37. sscanf(buffer,"%f",&c2.pickup);
  38. fgets(buffer,sizeof(buffer),stdin);
  39. sscanf(buffer,"%f",&c2.deportivo);
  40. //datos del tercer auto
  41. printf("Introduzca los datos del tercer auto:\nanio: ");
  42. fgets(buffer,sizeof(buffer),stdin);
  43. sscanf(buffer, "%d", &c3.año);
  44. printf("Introduzca el modelo: ");
  45. fgets(c1.modelo,sizeof(c3.modelo),stdin);
  46. printf("Introduzca la marca: ");
  47. fgets(c1.marca,sizeof(c3.marca),stdin);
  48. printf("Introduzca los precios para sedan, pickup, deportivo:\n");
  49. fgets(buffer,sizeof(buffer),stdin);
  50. sscanf(buffer,"%f",&c3.sedan);
  51. fgets(buffer,sizeof(buffer),stdin);
  52. sscanf(buffer,"%f",&c3.pickup);
  53. fgets(buffer,sizeof(buffer),stdin);
  54. sscanf(buffer,"%f",&c3.deportivo);
  55. return 0;
  56. }

Gracias.  :D


En línea

So i herd u liek mudkipz?
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Ayuda con estructura
« Respuesta #1 en: 20 Noviembre 2010, 06:12 am »

depende lo que quieras hacer con esos datos, si los queres mostrar por pantalla o guardar en un archivo, seria mas fácil declarar una sola estructura y hacer un ciclo, un for de 3, y cargarlos en la misma estructura. y vas devolviendo los datos.


En línea

Mr.Blue


Desconectado Desconectado

Mensajes: 441



Ver Perfil WWW
Re: Ayuda con estructura
« Respuesta #2 en: 21 Noviembre 2010, 04:59 am »

crear una matriz? de [3]x[X]

algo asi

struct Auto{
   int año[3];
        float sedan[3], pickup[3], deportivo[3];
   char modelo[3][100];
   char marca[3][100];
} c1;

Comentario.

        float sedan[3], pickup[3], deportivo[3];

esto lo podes tmb modificar
sabiendo vos que

 sedan   pickup   deportivo
     1        2            3

hacer una matriz

floar algo [3] [3];

« Última modificación: 21 Noviembre 2010, 05:06 am por Sr.Blanco » En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Ayuda con estructura
« Respuesta #3 en: 21 Noviembre 2010, 17:15 pm »

Consejos ...
Agrupa el código en funciones a ser posible , de esa manera evitarás tener que repetirlo y el código será más corto y fácil de leer.
Usa memoria dinámica siempre que sea posible, no crees que es un desperdicio reservar 100 posiciones para la marca y el modelo ?

Espero que este ejemplo te sirva de ayuda
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define ELEMENTOS 2
  5. #define LIMPIA_BUFFER  while(getchar()!='\n');
  6.  
  7. typedef struct{
  8. int año;
  9.        float sedan, pickup, deportivo;
  10. char *modelo;
  11. char *marca;
  12. }type_auto;
  13.  
  14. int main(int elem , char ** args ){
  15. int num_elementos = 0;
  16. char buffer[100];
  17. int i = 0;
  18.  
  19. if (args[1] != NULL){
  20. sscanf(args[1],"%d",&num_elementos);
  21. }
  22.  
  23. if(num_elementos > 50 || num_elementos < 1 ){
  24. num_elementos = ELEMENTOS;
  25. }
  26.  
  27. type_auto autos[num_elementos];
  28.  
  29. init_auto(autos, num_elementos);
  30.  
  31. for (i = 0 ; i < num_elementos ; i++){
  32. printf("Introduzca el modelo del auto %d: " , (i + 1));
  33. fgets(buffer,100,stdin);
  34. autos[i].modelo = (char*) malloc(strlen(buffer) * sizeof(char*));
  35. strcpy(autos[i].modelo , buffer);
  36. memset(buffer,' ',100);
  37.  
  38. printf("Introduzca la marca del auto %d: ", (i + 1));
  39. fgets(buffer,100,stdin);
  40. autos[i].marca = (char*) malloc(strlen(buffer) * sizeof(char*));
  41. strcpy(autos[i].marca , buffer);
  42. memset(buffer,' ',100);
  43.  
  44. printf("Escriba el año del auto \n");
  45. fscanf(stdin,"%d",&autos[i].año);
  46. LIMPIA_BUFFER;
  47.  
  48. printf("Introduzca los precios para sedan, pickup, deportivo:\n");
  49.  
  50. fscanf(stdin,"%f",&autos[i].sedan);
  51. LIMPIA_BUFFER;
  52.  
  53. fscanf(stdin,"%f",&autos[i].pickup);
  54. LIMPIA_BUFFER;
  55.  
  56. fscanf(stdin,"%f",&autos[i].deportivo);
  57. LIMPIA_BUFFER;
  58.  
  59.  
  60. }
  61. mostrar_auto(autos, num_elementos);
  62. free_auto(autos ,  num_elementos);
  63. printf("\nPresione una tecla para terminar...");
  64.  
  65. }
  66.  
  67.  
  68. int init_auto(type_auto *autos , int elementos){
  69. int i = 0;
  70.  
  71. for (i ; i < elementos ; i++){
  72. autos[i].año = 0;
  73. autos[i].sedan = 0;
  74. autos[i].pickup = 0;
  75. autos[i].deportivo = 0;
  76. autos[i].modelo = NULL;
  77. autos[i].marca = NULL;
  78. }
  79. return 0;
  80. }
  81.  
  82. int mostrar_auto(type_auto *autos , int elementos){
  83. int i = 0;
  84.  
  85. for (i ; i < elementos ; i++){
  86. printf("\nMarca =%sModelo =%sAnio =%d\nPrecios: Sedan =%f Pickup =%f Deportivo =%f ",autos[i].marca,autos[i].modelo,autos[i].año,
  87. autos[i].sedan, autos[i].pickup, autos[i].deportivo);
  88. }
  89. return 0;
  90. }
  91.  
  92. int free_auto(type_auto *autos , int elementos){
  93. int i = 0;
  94.  
  95. for (i ; i < elementos ; i++){
  96. free(autos[i].modelo);
  97. free(autos[i].marca);
  98. }
  99. return 0;
  100. }
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Fallo de estructura
Programación C/C++
jospar 3 2,326 Último mensaje 18 Enero 2015, 22:18 pm
por avesudra
ayuda con punteros a estructura
Programación C/C++
abaadoon 1 2,276 Último mensaje 12 Febrero 2016, 04:49 am
por 0xFer
Ayuda codigo c ++ estructura selectiva + repetitiva
Programación C/C++
gleon_01 3 2,503 Último mensaje 20 Marzo 2016, 20:07 pm
por gleon_01
Ayuda en la estructura de mi web
Desarrollo Web
anfgonzalez 7 3,990 Último mensaje 3 Agosto 2016, 08:53 am
por Adrialmend
ayuda con estructura php
PHP
xavidenia 1 2,263 Último mensaje 3 Octubre 2016, 10:45 am
por xavidenia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines