Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: indict en 19 Marzo 2013, 14:22 pm



Título: ejercicio bucle while
Publicado por: indict en 19 Marzo 2013, 14:22 pm
Hola,
tengo unas cuestiones en resolver el siguiente ejercicio.

I. Desarrollar un programa que lea una lista de enteros menores de 1000 que
acabará cuando se den las tres condiciones siguientes:
1) Se han encontrado al menos 5 múltiplos de 3 o de 7.
2) El número mayor es al menos 10 veces más grande que el número menor.
3) El promedio de los números pares supera al de los impares.

II. Cuando las tres condiciones se den y se termine la lectura de la lista de enteros se deberá:
• Escribir en pantalla y en orden descendente todos los números múltiplos de 5 entre el número
mayor y el menor.
• Escribir en pantalla la lista de todos los números impares mayores del promedio y menores
del mayor de la siguiente manera: En el primer renglón el primer número, en el segundo
reglón dos, el segundo y tercero, y así sucesivamente.
• Decir si existe algún divisor común de los números mayor y menor. Si existe decir cuál.


¿Cómo cuento el valor mayor y menor de una lista sin usar vectores?

En II, que debo hacer poner en el mismo bucle while al final las tres condiciones con and y cout.

Código:
#include<iostream>
using namespace std;


int main(){
    int i=0,s=0,p;
   
    while(i<1000){
   
    if((i%3==0)>=5){return 0;} //apartado 1
    else if((i%3==0)>=5){return 0;}
   
   //apartado 2 ?
   
    else if(if(i%2==0)){{p=p+1;}//apartado 3
   
    else{s=s+1;}
    return 0;}
             
                i++; }
   
    system("PAUSE");
    return 0;}


Gracias por la ayuda :)


Título: Re: ejercicio bucle while
Publicado por: $Edu$ en 19 Marzo 2013, 14:37 pm
Ese codigo que dejas sirve para alguna de las cosas que tienes que hacer? porque pareciera que no.
Otra pregunta, por que no puedes usar vectores?
De cualquier forma sin usar vectores podrias hacer que cada numero que se va generando se compare con el anterior (usaras 2 variables para guardar los numeros, los valores de i consecutivos) asi vas guardando cual es el mayor o menor. Es decir por ejemplo si tienes el primer numero el 1, lo guardas, luego generas el numero 2, comparas el 2 con el 1, si es mayor, guardas como variable "mayor" a el 2, hasta que uno lo reemplace. Por dar un ejemplo.

Planteate todo en papel y lapicera, pensala un poco y distruibuite bien las cosas que compararas y los bucles.


Título: Re: ejercicio bucle while
Publicado por: amchacon en 19 Marzo 2013, 14:58 pm
La parte I (quitando el punto 3 que no entiendo a que se refiere con "promedio de pares y impares"):
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int N;
  8.  
  9.    int Min,Max,Multiplos3 = 0,Multiplos7 = 0;
  10.  
  11.    cin>>N;
  12.  
  13.    Min = N;
  14.    Max = N;
  15.  
  16.    while(N<1000 && Max >= (Min*10) && Multiplos3 != 5 && Multiplos7 != 5)
  17.    {
  18.        cin>>N;
  19.  
  20.        if(N%3==0)
  21.        {
  22.            Multiplos3++;    //apartado 1
  23.        }
  24.        if(N%7==0)
  25.        {
  26.            Multiplos7++;
  27.        }
  28.        if (Min > N)
  29.            Min = N;
  30.        else if (Max < N)
  31.            Max = N;
  32.    }
  33.  
  34.    system("PAUSE");
  35.    return 0;
  36. }
  37.