Dudas de Programacion » Lenguajes de Proposito General » C

Al ejecutar el programa no funciona como quiero que funcione

(12 posts)

Tags:

No tags yet.

  1. #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",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
     
              printf("\n La mediana de estos %d numeros es %.2f",a,(b+c)/a);    
     
      if(a==3)
     
              printf("Ponga un numero: ");
              scanf(" %f",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&e);
              printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&e);
              printf("Ponga otro numero: ");
              scanf(" %f",&f);
               printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&e);
              printf("Ponga otro numero: ");
              scanf(" %f",&f);
               printf("Ponga otro numero: ");
              scanf(" %f",&g);
              printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&e);
              printf("Ponga otro numero: ");
              scanf(" %f",&f);
               printf("Ponga otro numero: ");
              scanf(" %f",&g);
              printf("Ponga otro numero: ");
              scanf(" %f",&h);
               printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&e);
              printf("Ponga otro numero: ");
              scanf(" %f",&f);
               printf("Ponga otro numero: ");
              scanf(" %f",&g);
                 printf("Ponga otro numero: ");
              scanf(" %f",&i);
              printf("Ponga otro numero: ");
              scanf(" %f",&h);
               printf("Ponga otro numero: ");
              scanf(" %f",&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",&b);
               printf("Ponga otro numero: ");
              scanf(" %f",&c);
              printf("Ponga otro numero: ");
              scanf(" %f",&d);
              printf("Ponga otro numero: ");
              scanf(" %f",&e);
              printf("Ponga otro numero: ");
              scanf(" %f",&f);
               printf("Ponga otro numero: ");
              scanf(" %f",&g);
              printf("Ponga otro numero: ");
              scanf(" %f",&h);
                 printf("Ponga otro numero: ");
              scanf(" %f",&i);
               printf("Ponga otro numero: ");
              scanf(" %f",&j);
               printf("Ponga otro numero: ");
              scanf(" %f",&k);  
     
             printf("\n La mediana de estos %.d numeros es %.2f",a,(b+c+d+e+f+g+h+i+j+k)/a);    
     
    int z;
    printf(" ");
    scanf(" %d",&z);
    }

    Este es el código, para hacer una simple calculadora que te haga medianas, lo he hecho a partir del if, pk no sé muy bien como funciona el for, pero el problema está en que si pongo 1, va bien, si pongo 2, tambien va bien, pero al poner tres, no me pone: ponga un numero, no me sale nada. Si alguien me puede ayudar, se lo agradeceria, muchas gracias(:

    Posted 1 year ago #


  2. 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.

    Posted 1 year ago #
  3. 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:

     
    #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 1000\n");
    			ch = getchar();
    			char_count = 0;
    			while( (ch != '\n')  &&  (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-1000\n");
    			else
    				valid_choice = 1;
    		}
    		printf("\nEl número que has introducido es:\n");
    		printf("%d\n", number);
     
    		valid_choice = 0;
    		while( valid_choice == 0 ) {
    			printf("Seguir (Y/N)?\n");
    			scanf(" %c", &ch );
    			ch = toupper( ch );
    			if((ch == 'Y') || (ch == 'N') )
    				valid_choice = 1;
    			else
    				printf("07Error: Opción incorrecta\n");
    			cleartoendofline();
    		}
    		if( ch == 'N' ) exit_flag = 1;
    	}
     
    }
     
    Saludos
    Posted 1 year ago #
  4. 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!

    Posted 1 year ago #


  5. #include<stdlib.h>
    #include<stdio.h>

    int main(){

    int cantidad,cantidad2,i;

    float media,contador=0;

    printf("Cuantos numeros deseas introducir para calcular la media\n");
    scanf("%d",&cantidad);
    fflush(stdin);

    for(i=0;i<cantidad;i++){
    printf("Introduzca un valor\n");
    scanf("%d",&cantidad2);
    fflush(stdin);
    contador=contador+cantidad2;
    }
    media=contador/cantidad;

    printf("La media de estos %d numeros es %f\n",cantidad,media);
    system("pause");
    return 1;
    }
    //Estoy capullo lleva dias colgado en otra sección, jajajajajaja ;-) a mandar!!!!!!!!

    Posted 1 year ago #
  6. Cuando pones: contador=contador+cantidad2, a que se refiere? Me lo puedes explicar Jubalo, porfavor? Muchas gracias(:

    Posted 1 year ago #
  7. 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

    Posted 1 year ago #


  8. Vale, vale, he cojido la idea, el ejemplo me ha aclarado mucho la duda, muchas gracias!

    Posted 1 year ago #
  9. Y lo de: return 1; para k sirvee?

    Posted 1 year ago #
  10. 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

    Posted 1 year ago #
  11. 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!(:

    Posted 1 year ago #
  12. Me alegro,

    Pero si lo quieres en español búscalo que hay miles y miles, acostúmbrate a usar google que está casi todo ahí.

    Además C es un lenguaje relativamente "viejo" por lo que hay mucha documentación y cursos online.

    http://tinyurl.com/25d6xzp

    Un saludo

    Posted 1 year ago #

Reply

You must log in to post.

1,070 posts in 437 topics over 40 months by 388 of 892 members. Latest: lalala, nijh1, jasu

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs