Código de Dev - C++ - Recalculo de media

sin imagen de perfil
Val: 46
Ha aumentado su posición en 35 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Recalculo de mediagráfica de visualizaciones


Dev - C++

Publicado el 26 de Junio del 2021 por Guerrero15 (3 códigos)
11.150 visualizaciones desde el 26 de Junio del 2021
Buenas tardes:

Se trata de un código que ha ido avanzando poco a poco, hasta llegar a su versión 6.1.

Al principio se trataba de un simple recalculo de media, es decir, el usuario insertaba un número, a continuación otro, y le decía la media. Posteriormente otro, y le calculaba otra vez la media y la imprimía en pantalla.

Pero después de varias versiones ha acabado siendo un código algo más complejo, que te pide cuántos números se quieren insertar, y que pulsando el 0 da la opción de finalizar el bucle, además de usar el 0 como número, ya que se podría dar el caso. Además, guarda todos los números y medias en una matriz y los muestra al final para saber como ha ido cambiando la media, por si se requiere copiar en un excel y hacer un gráfico, algo que podría ser muy curioso.

El código fue hecho hace varios meses, aunque hasta ahora no se me había ocurrido subirlo.

Aún no es la versión final, ya que me gustaría que al terminar el programa creara un fichero txt con la lista de los números, cosa que de momento no hago debido a la falta de conocimientos, pero cuando sepa como hacerlo, y si me acuerdo, renovaré el archivo que vaya a subir en estos momentos.

Si alguien quiere que le pase todas las versiones que he hecho por curiosear un poco, puede dejarlo en comentarios, y en cuanto lo lea intentaré subirlos a este u otro fichero.

Un saludo

6.1

Publicado el 26 de Junio del 2021gráfica de visualizaciones de la versión: 6.1
11.151 visualizaciones desde el 26 de Junio del 2021
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <locale.h>
#include <conio.h>
#include <ctype.h>
 
int repetir ();
 
int main(){
    int k=1, i, j;
    float num, x=0;
    char resp;
 
    /*
        k es un contador
        i es para el for
        j es las columnas de la matriz
        num es el numero que metes para hacer la media
        x es la media
        resp es para preguntar si quieres seguir o no
    */
 
    //Para poner los acentos en español
    setlocale (LC_ALL, "spanish");
 
    // Aquí se pide el número de columnas de la matriz
    printf ("\n\t Calculadora de medias");
    printf ("\n\t =====================");
 
    printf ("\n\n\t Cuántos números quieres meter?: ");
    scanf ("%d", &j);
 
    system ("cls");
 
    // Una vez insertado el número de columnas se define la matriz
    float matriz [2][j];
 
    system ("cls");
 
    for (i=0; i<j; i++){
        //Una introducción para el usuario
        printf ("\n\t Calculadora de medias");
        printf ("\n\t =====================");
 
        printf ("\n\n\t Decimales con COMA, NO con PUNTOS, gracias.");
        printf ("\n\n\t Números menores de 100.000, gracias.");
        printf ("\n\n\t Meta un 0 para salir");
 
        //Esto nos indica cuántos números nos quedan por meter
        //Aunque tenemos la opción de pararlo mediante un 0
        printf ("\n\n\t Quedan %d números", j-(i+1));
 
        //Aquí insertamos un número
        printf ("\n\n\t Número %d: ", i+1);
        scanf ("%f", &num);
 
        //Si el número es 0 significa que el usuario quiere cerrar el bucle antes de tiempo
        //Aunque también está la posibilidad de que 0 sea un número y no lo quiera cerrar
        //Para eso preguntamos si quiere seguir o no
        if (num == 0){
            printf ("\n\t Continuar s/n: ");
 
            //En caso de que no meta ni s ni n, habrá un fallo.
            //Por lo que la pregunta de continuar seguirá hasta que introduzca una respuesta lógica
            do {
                resp = getche();
                resp = tolower (resp);
 
                //Si es s, simplemente seguirá el código
                if (resp == 's'){
                    printf ("\n ");
                }
 
                //Si es n, el valor de i pasará a j, y posteriormente se cerrará el programa
                else if (resp == 'n'){
                    j = i;
                    break;
                }
 
                //Sino, se repetirá el código
                else if (resp != 'n' && resp != 's'){
                    printf ("\n\n\t Respuesta incorrecta, prube de nuevo: ");
                }
            }
 
            while (resp != 'n' && resp != 's');
        }
        //Si la respuesta es n, no solo sale del bucle do...while, sino que tb del for, para eso este segundo break
        if (resp == 'n'){
            break;
        }
 
        //Sino, el código funciona con normalidad
        x = (x*(k-1)+num)/k;
        matriz [0][i] = num;
        matriz [1][i] = x;
 
        //Con esto hago que si el numero que meto es el primero no aparezca el resultado de la media
        if (i!=0){
            printf ("\n\t La media aritmética es %.2f", x);
            system ("pause>null");
        }
 
        system ("cls");
 
        k++;
    }
    //Ahora se muestran todos los numeros
    system ("cls");
 
    printf ("\n\t     Número      Media");
    printf ("\n\t     ======      =====");
 
    printf ("\n\t   ");
 
    for (i=0; i<j; i++){
        if (i!=0){
            printf ("\n\t + ");
        }
 
        printf ("%8.2f   %8.2f", matriz [0][i], matriz [1][i]);
 
        Sleep (500);
    }
 
    printf ("\n\n\t Media final = %.2f", x);
 
    system ("pause>null");
    repetir ();
}
 
int repetir (){
    char resp;
 
    printf ("\n\n\t Cerrar programa s/n: ");
    resp = getche();
    resp = tolower (resp);
 
    switch (resp){
        case 's':
            return 0;
        break;
 
        case 'n':
            system ("cls");
            return main();
        break;
 
        default:
            printf ("\n\n\t Resuesta incorrecta. Pruebe de nuevo\n\n\t Pulse cualquier tecla para continuar...");
            getch();    //getch() == system ("pause>null");
            system ("cls");
            return main();
    }
}

Si alguno de los archivos de descarga no funciona, comentanos aquí el error.




Comentarios sobre la versión: 6.1 (0)


No hay comentarios
 

Comentar la versión: 6.1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7107