• Jueves 14 de Noviembre de 2024, 04:19

Autor Tema:  Ejercicio dificil, hasta de definir en ASUNTO!!  (Leído 1491 veces)

ermiguel1979

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Ejercicio dificil, hasta de definir en ASUNTO!!
« en: Sábado 19 de Diciembre de 2009, 21:49 »
0
Buenas noches a toda la gente del foro. Soy Miguel, con otro ejercicio cojonero de clase que me trae por la calle de la amargura...
El bichejo dice así:

"Crea un programa que lea de teclado una secuencia de números enteros positivos de 0 a 100, ambos inclusives. La secuencia de números introducidos terminará cuando se introduzca un número que no cumpla la condición (que no esté entre 0 y 100). Al finalizar de introducir los números , mostrará cuantas veces se ha introducido cada número."

Tengo problemas con detener el ciclo cuando no se desee introducir más números (sin tener que terminar de rellenar el vector), y me parece que tanto condicional no debe ser una forma muy eficiente de resolverlo. Más que nada porque solo he implementado el algoritmo para números del 0 al 13...

Os mando lo que llevo hecho hasta ahora...

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

int main (void){
   int vector[50];
   int I, numero;
   int a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0; //Variables que anotan las_
   int i=0, j=0, k=0, l=0, m=0, n=0;         //_repeticiones de cada numero
   
   for(I=0; I<=50; I++){
      printf("Introduce numero entre 0 y 13: ");
      scanf("%i", &numero);
      if(numero>=0 && numero<=13){
         if(numero=0){
            a=a+1;
         }else{
            if(numero=1){
               b=b+1;
            }else{
               if(numero=2){
                  c=c+1;
               }else{
                  if(numero=3){
                     d=d+1;
                  }else{
                     if(numero=4){
                        e=e+1;
                     }else{
                        if(numero=5){
                           f=f+1;
                        }else{
                           if(numero=6){
                              g=g+1;
                           }else{
                              if(numero=7){
                                 h=h+1;
                              }else{
                                 if(numero=8){
                                    i=i+1;
                                 }else{
                                    if(numero=9){
                                       j=j+1;
                                    }else{
                                       if(numero=10){
                                          k=k+1;
                                       }else{
                                          if(numero=11){
                                             l=l+1;
                                          }else{
                                             if(numero=12){
                                                m=m+1;
                                             }else{
                                                if(numero=13){
                                                   n=n+1;
                                                }
                                             }
                                          }
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      if(numero<0 || numero>13){
         printf("numero incorrecto; el numero debe estar entre 0 y 13n");
      }
   }
      
   printf("0: %it1: %it2: %it3: %it4: %in", a, b, c, d, e);
   printf("5: %it6: %it7: %it8: %it9: %in", f, g, h, i, j);
   printf("10: %it11: %it12: %it13: %in", k, l, m, n);
   
   system("PAUSE");
}

Gracias a todos y un saludo!

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Ejercicio dificil, hasta de definir en ASUNTO!!
« Respuesta #1 en: Domingo 20 de Diciembre de 2009, 00:23 »
0
No es complicado, es muy facil de hacer utilizando vectores, de hecho, en tu programa de ejemplo defines un vector de 50, pero nunca lo utilzas.

Podrias definir un vector de 101 elementos para guardar todos los numeros, ya que dices que dedes introducir un numero del 0 al 100 inclusive, y del 0 al 100 son 101 numeros.

Usarias 2 vectores, uno para guardar los numeros, y otro para el contador de cada numero. Antes de comenzar a contar, mediante un ciclo inicializa a cero el vector contador.

Ahora, para que puedas leer menos de 100 numeros, utiliza un ciclo while en lugar de un ciclo for, y que la condicion de salida sea mediante una bandera, y en lugar de comparar, cuenta cada numero dentro de su posicion del vector, o sea, el numero 0 iria en la posicion 0, el numero 1 en la pocicion 1, el numero 2 en la posicion 2 y asi sucesivamente, algo asi mas o menos:
Código: C++
  1.  
  2.     int bandera = 0;
  3.     int i = 0;
  4.     while ((i < 100) && (bandera == 0)
  5.     {
  6.         printf("Introduce numero entre 0 y 100: ");
  7.         scanf("%i", &numero);
  8.         if ((numero < 0) || (numero > 100))
  9.             bandera = 1;
  10.         contador[numero] = contador[numero] + 1;
  11.         i++;
  12.  
  13.  

Cuando bandera sea igual a 1, o el contador sea mayor a 100, seria hora de dejar el ciclo.

Con esas pistas de seguro lo podras terminar.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

ermiguel1979

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Ejercicio dificil, hasta de definir en ASUNTO!!
« Respuesta #2 en: Domingo 20 de Diciembre de 2009, 11:21 »
0
Gracias tio, eran las pistas que me faltaban, aunque al final lo he hecho con un solo vector y unos cuantos bucles...

Te lo mando para que lo veas:
Código: C
  1.  
  2.  
/*EJERCICIO 8; PRACTICA 4*/

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

/*Algoritmo -> 100 NUMEROS*/
int main (void){
   int contador[101];      //array contador de cada numero (las repeticiones)
   int i=0, a=0, b=0;      //contadores de los bucles 'for' y 'while'
   int bandera=0;         //cierre del bucle 'while'
   int valor;            //numero introducido por teclado en cada iteración
   
   /*Inicializar el vector contador*/
   for(i=0; i<=100; i++){
      contador=0;
   }
      
   /*Pidiendo numeros*/
   while((a <= 100) && (bandera == 0)){            //permite 100 entradas
      printf("Introduce numero entre 0 y 100: ");
      scanf("%i", &valor);
      if((valor < 0) || (valor >100)){
         bandera = 1;
      }
      contador[valor] = contador[valor] +1;
      a++;
   }
   printf("n");
   
   /*Mostrando numeros*/
   for(b=0; b<=100; b++){
      printf("%i: %it", b, contador);
   }
   printf("n");
   system("PAUSE");
}
Código: C
  1.  
  2.  



Gracias, gracias, gracias...