C/Visual C - Programa que capture estaturas de personas...

 
Vista:
Imágen de perfil de Sky
Val: 1
Ha disminuido su posición en 32 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Programa que capture estaturas de personas...

Publicado por Sky (1 intervención) el 13/12/2019 10:54:29
Hola a todos buen día necesito de su ayuda, estoy aprendiendo a programar en C y estoy haciendo un programa donde se capture n numero de estaturas ordenadas de menor a mayor, que mencione la estatura mínima y máxima y que imprima el promedio de la estaturas.

Bueno he logrado que mi programa ordene los números de menor a mayor (solo números enteros) pero no he podido que los ordene con números decimales, que mencione que estatura es la menor/mayor y el promedio de estas...

Este es mi código:

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main()
{
    printf("\n  **  PROGRAMA CAPTURADOR DE ESTATURAS  **\n\n");
    int numeros_a_ordenar;
    printf("Cantidad de estaturas que desea ordenar:  ");
    scanf(" %d", &numeros_a_ordenar);
    printf("\n¿Cuales son las estaturas?\n");
    int vector_numeros[numeros_a_ordenar];
    int i, j, k=1;
    for(i=0;i<numeros_a_ordenar;i++)
    {
        printf("  %dº Estatura: ", k);
        scanf(" %d", &j);
        vector_numeros[i] = j;
        k++;
    }
    printf("\n\nEstaturas a ordenar:\n");
    printf("  ");
    for(i=0;i<numeros_a_ordenar;i++)
    {
        printf("%d  ", vector_numeros[i]);
    }
    int x, y;
    for(i=0;i<numeros_a_ordenar;i++)
    {
        for(j=i+1;j<numeros_a_ordenar;j++)
        {
            x = vector_numeros[i] - vector_numeros[j];
            if(x>0)
            {
                y = vector_numeros[j];
                vector_numeros[j] = vector_numeros[i];
                vector_numeros[i] = y;
            }
        }
    }
    printf("\n\n Las estaturas ordenadas son:  \n");
    printf("  ");
    for(i=0;i<numeros_a_ordenar;i++)
    {
        printf("%d  ", vector_numeros[i]);
    }
}


Les agradezco mucho su atención y estaré muy agradecida si me ayudan
¡Gracias!
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
sin imagen de perfil
Val: 89
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Programa que capture estaturas de personas...

Publicado por Bruno (38 intervenciones) el 14/12/2019 15:05:15
Para que ordene números decimales deberías declarar el vector como float, porque al declararlos como int se pierde la parte decimal.
Saludos.
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

Programa que capture estaturas de personas...

Publicado por Israel Luengo Garcia a.k.a Snaked of Polygon (6 intervenciones) el 08/01/2020 13:18:28
Hola Sky

he estado un rato codeando eso que pides aunque no este perfecto puede que te sirva de base para mejorarlo por tu cuenta

ten en cuenta tambien, que en la introduccion de datos de scanf no comprueba la validez de los datos con lo cual si pones cosas errorneas como un nombre y apellido en el nombre o 1,70 en la altura (cuando debe ser decimal con punto segun los ordenadores) el funcionamiento correcto podria flaquear

aqui tienes el codigo fuente

CODIGO en C++ Builder 10.3 (Rad Studio modo Consola)

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
#pragma hdrstop
#pragma argsused
 
#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif
 
#include <stdio.h>
#include <conio.h>
 
void NUEVA_FICHA(void);
void VER_RESULTADOS(void);
void BORRAR_FICHAS(void);
float promedio(int cantidad_registros);
 
struct p {
		   char nombre[20];
		   float estatura = 0;
		   int edad = 0;
		   bool estado = 0;
};
 
struct p fichas[5];
int opcion = 0;
 
int _tmain(int argc, _TCHAR* argv[])
{
   for(;;)
   {
	 clrscr();
 
     gotoxy(1,22);
	 printf("(1)Nueva ficha (2) Ver Resultados (3) Borrar fichas (4) Salir");
	 scanf("%d", &opcion);
 
	 switch(opcion)
	  {
		case 1:
				NUEVA_FICHA();
				break;
 
		case 2:
				VER_RESULTADOS();
				break;
 
		case 3: BORRAR_FICHAS();
				break;
		case 4:
				 goto EXIT;
				 break;
	  }
 
   }
 
 EXIT:
	return 0;
}
 
 
void NUEVA_FICHA(void)
{
  for(int count = 0; count < 5; ++count)
   {
	 if(fichas[count].estado == 0)
	  {
			 gotoxy(1,22);
			 printf("Ficha %d libre...introduzca datos", count);
		gotoxy(1,5);
		printf("Nombre: "); scanf("%s", &fichas[count].nombre[0]);
		printf("\r\nEdad: "); scanf("%d", &fichas[count].edad);
		printf("\r\nEstatura: "); scanf("%f", &fichas[count].estatura);
		fichas[count].estado = 1;
		gotoxy(1,10);
 
		printf("FICHA GUARDADA...pulse una tecla...");
		getch();
		goto MENU_PPAL;
 
 
	  }
 
	  else {
			 clrscr();
			 gotoxy(1,22);
			 printf("Ficha %d ocupada...pulse una tecla para continuar", count);
			 getch();
 
	  }
   }
 
 
MENU_PPAL:
 
return;
 
}
 
 
void BORRAR_FICHAS(void)
{
  for(int count = 0; count < 5; ++count)
   {
	  for (int i = 0; i < 20; i++) {
 
		fichas[count].nombre[i] = '\0';
	  }
		gotoxy(1,5);
		fichas[count].edad = 0;
		fichas[count].estatura = 0;
		fichas[count].estado = 0;
 
 
 
 
 
 
   }
		gotoxy(1,10);
		printf("FICHAS BORRADAS...pulse una tecla...");
		getch();
}
 
void VER_RESULTADOS(void)
{
		  float mayor, menor;
  gotoxy(1,1);
  for(int count = 0; count < 5; ++count)
   {
	  printf("%s  |  %d  |  %f\r\n", fichas[count].nombre, fichas[count].edad, fichas[count].estatura);
 
   }
 
	  mayor = fichas[0].estatura; //Le asignamos el primer elemento del array
	  menor = fichas[0].estatura; //Así empezamos a comparar
 
	for (int i=0; i<5; i++){
	  if (fichas[i].estatura > mayor){
	  mayor=fichas[i].estatura;
	  }
 
 
	  if (fichas[i].estatura < menor){
		menor=fichas[i].estatura;
	  }
	 }
 
 
		gotoxy(1,22);
		printf("RESULTADOS: Promedio Estatura: %f ...Menor Estatura: %f  Mayor estatura: %f...", promedio(5), menor, mayor);
   getch();
 
 
 
}
 
float promedio(int cantidad_registros)
{
	int i;
	float suma = 0.0;
 
	for (int i = 0; i < cantidad_registros; ++i)
		suma += fichas[i].estatura;
 
	return suma / (float) cantidad_registros;
}
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