0 votos
por (220 puntos) en C/C++
<pre lang='c'>#include <stdio.h>
main()
{

  int a;
  float b,c,d,e,f,g,h,i,j,k;

  printf("Cuantos numeros quiere introducir(con un maximo de 10 numeros)?: ");
  scanf(" %d",&amp;a);

     if(a<0 || a>10)

          printf("n Error");

  else if(a==0)
      printf("No hay nada que hacer");
  else if(a==1)

      printf("No se puede hacer la mediana de un solo numero");
  else if(a==2)

          printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c)/a);    

  if(a==3)

          printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d)/a);   

    if(a==4)

            printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d+e)/a);

     if(a==5)

            printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;f);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d+e+f)/a);

    if(a==6)

          printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;f);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;g);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d+e+f+g)/a);

     if(a==7)

                     printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;f);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;g);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;h);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d+e+f+g+h)/a);

     if(a==8)

          printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;f);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;g);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;h);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;i);

          printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d+e+f+g+h+i)/a);

           if(a==9)

            printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;f);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;g);
             printf("Ponga otro numero: ");
          scanf(" %f",&amp;i);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;h);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;j);  

         printf("n La mediana de estos %d numeros es %.2f",a,(b+c+d+e+f+g+h+i+j)/a);    

           if(a==10)

            printf("Ponga un numero: ");
          scanf(" %f",&amp;b);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;c);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;d);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;e);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;f);
           printf("Ponga otro numero: ");
          scanf(" %f",&amp;g);
          printf("Ponga otro numero: ");
          scanf(" %f",&amp;h);
             printf("Ponga otro numero: ");
          scanf(" %f",&amp;i);
           printf("Ponga otro numero: ");
         

11 Respuestas

0 votos
por (200 puntos)
Socio, por lo que veo has empezado hace poco con C. Tu código está hecho un lio y plagado de errores por donde quiera que lo mires. En primer lugar no declares nada como %f a no ser que quieras que sea un numero con decimales, para este ejercicio tan básico declara todas las variables como int (%d o %i).En segundo lugar no abres ni cierras llaves después de cada If o cada else; cuando el if o el else solo llevan una sentencia asociada puedes ahorrártelas, pero no te acostumbres a esto hasta que no pilotes mas. En tercer lugar después de cada scanf has de hacer un fflush (stdin) ya te explicaré mas adelante el porque, de momento hazlo o antes o después te acabará pasando factura. Y por último debes de aprender YA a usar los bucles, ya que estos automatizan los procesos y te permiten ahorrar código (no hace falta poner 27000 ifs como tu tienes).Si quieres puedo echarte un cable por aqui mas adelante si contestas a este post.Un placer, aqui estamos par ayudar,un saludo y hasta pronto.


0 votos
por (8.5k puntos)
Mientras veía tu código veo que te han respondido. Te recomiendo lo mismo que @jubalo, empieza de 0, con algún tutorial o algún libro, hay muchos y muy buenos sobre C por internet.

Tu código tiene fallos muy básicos, de control de flujo para empezar (no poner llaves a los if´s), el uso de bucles, sobre todo para la entrada/salida de información es muy básico.

Lo dicho empieza de 0 y verás como van saliendo las cosas.

Te dejo un tutorial que he encontrado:

http://gd.tuwien.ac.at/languages/c/programming-bbrown/default.htm

Y un programilla de lectura de datos como ejemplo:

<pre lang='C'>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define MAXBUFFERSIZE   80

void cleartoendofline( void );          /* ANSI function prototype */

void cleartoendofline( void )
{
    char ch;
    ch = getchar();
    while( ch != 'n' )
        ch = getchar();
}

int main()
{

    char    ch;                     /* handles user input */
    char    buffer[MAXBUFFERSIZE];  /* sufficient to handle one line */
    int     char_count;             /* number of characters read for this line */
    int     exit_flag = 0, number, valid_choice;

    while( exit_flag  == 0 ) {
        valid_choice = 0;
        while( valid_choice == 0 ) {
            printf("Elige un número entre 1 y 1000n");
            ch = getchar();
            char_count = 0;
            while( (ch != 'n')  &amp;&amp;  (char_count < MAXBUFFERSIZE)) {
                buffer[char_count++] = ch;
                ch = getchar();
            }
            buffer[char_count] = 0x00;      /* null terminate buffer */
            number = atoi( buffer );
            if( (number < 1) || (number > 1000) )
                printf("07Error. Fuera del rango 1-1000n");
            else
                valid_choice = 1;
        }
        printf("nEl número que has introducido es:n");
        printf("%dn", number);

        valid_choice = 0;
        while( valid_choice == 0 ) {
            printf("Seguir (Y/N)?n");
            scanf(" %c", &amp;ch );
            ch = toupper( ch );
            if((ch == 'Y') || (ch == 'N') )
                valid_choice = 1;
            else
                printf("07Error: Opción incorrectan");
            cleartoendofline();
        }
        if( ch == 'N' ) exit_flag = 1;
    }

}

0 votos
por (220 puntos)
Muchas gracias Jubalo y Torres, antes de seguir preguntando, prefiero ver los tutoriales que me ha dicho Torres, yo he estado viendo tutoriales, pero el for no me ha quedado muy claro. Cuando acabe de ver los tutoriales, si hay alguna duda, ya lo preguntaré en esta misma página. He tenido en cuenta todo lo que me habéis dicho, muchas gracias de nuevo!


0 votos
por (200 puntos)
#include<stdlib.h>

#include<stdio.h>

int main(){

int cantidad,cantidad2,i;

float media,contador=0;

printf("Cuantos numeros deseas introducir para calcular la median");

scanf("%d",&amp;cantidad);

fflush(stdin);

for(i=0;i<cantidad;i++){

printf("Introduzca un valorn");

scanf("%d",&amp;cantidad2);

fflush(stdin);

contador=contador+cantidad2;

}

media=contador/cantidad;

printf("La media de estos %d numeros es %fn",cantidad,media);

system("pause");

return 1;

}

//Estoy capullo lleva dias colgado en otra sección, jajajajajaja ;-) a mandar!!!!!!!!


0 votos
por (220 puntos)
Cuando pones: contador=contador+cantidad2, a que se refiere? Me lo puedes explicar Jubalo, porfavor? Muchas gracias(:


0 votos
por (8.5k puntos)
Buenas,

En la variable contador (igual el nombre no es muy adecuado) va acumulando la suma parcial de cada número.

Al hacer contador=contador+cantidad2;

Lo que está haciendo en sumar el nuevo valor introducido al a la suma parcial que ya existe y lo guarda todo en la propia variables contador.

EJEMPLO:

Situación inicial: contador=0

Introduzca un valor: 4

contador = 0 + 4;

Situacion tras 1 iteración: contador = 4

Introduzca un valor = 5

contador = 4 + 5

Situación tras 2 iteraciones: contador = 9

Espero que se entienda.

Un saludo


0 votos
por (220 puntos)
Vale, vale, he cojido la idea, el ejemplo me ha aclarado mucho la duda, muchas gracias!


0 votos
por (220 puntos)
Y lo de: return 1; para k sirvee?


0 votos
por (8.5k puntos)
el método main devuelve un entero:

int main(){

Por eso lo de devolver un 1, podía ser cualquier otro número...

Como va el repaso a los tutoriales? jeje

Un saludo


0 votos
por (220 puntos)
Va bien, pero bueno, de momento estoy en la intro, además está en inglés y al traducir, no es k traduzca del todo bien, pero me voy aclarando, está muy bien! muchas gracias!(:


Preguntas relacionadas

0 votos
1 respuesta
0 votos
1 respuesta
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...