programita c++

B

Bueno, stoy cn esto d programar y tengo q hacer un programa que dada una secuencia de numeros diga si es estrictamente creciente, estrictamente decreciente, o nada.

Decir que no podemos usar muchas cosas del lenguaje ya que hemos empezado y nos restringen varias cosas, pero vaya lo basico. Lo que he hecho yo es lo siguiente, no se pq si hago x ejemplo 7 5 3, me sale estrictamente decreixent (eso esta bien) y res (eso no tendria q salir), nose si sera pq el else nadamas vale para el ultimo if o q, alguna ayudita ? merci :)

#include
using namespace std;

int main () {
bool creixent, decreixent, uniforme;
creixent = decreixent = uniforme = false;
int a;
cin >> a;
int aux = a;


while (cin >> a) {
      if (aux < a) creixent = true;
      if (aux > a) decreixent = true;
      if (aux == a) uniforme = true;
      aux = a;
}
if (creixent and not decreixent and not uniforme) {
             cout << "estrictament creixent" << endl;
}
if (decreixent and not creixent and not uniforme) {
             cout << "estrictament decreixent" << endl;
}
if (uniforme and not creixent and not decreixent) {
             cout << "uniforme" << endl;
}
else cout << "res" << endl;

}

maRc

Porque en el último if, si no se cumple la condición, pasa a ejecutarse el else.

Es decir, siempre que no sea uniforme o sea creciente o decreciente, se ejecutará.

B

Hay alguna forma de englobar todos los if, y ntonces hacer un else, osea (if if if) else ?

maRc

if (tacataca) {
}
else {
....if (tocoto) {
....}
....else {
........if(tucutu) {
........}
........else {
........}
....}
}

B

esta pq tiene pocas combinaciones, pero imaginate q tengo q poner 20 ifs, tonces quieres decir q no m kda mas remedio q poner un if con todas las condiciones anteriores? :S:S xD

edit: nice thx xd

Riu

hazlo con varios if anidados olvidate del while.

maRc

#6, enfoca el problema desde otra perspectiva: inicializa todos los bools a true, en lugar de false, y en el while los pones a falso cuando no se cumpla su condición.

Así en las condiciones finales solo vas a tener que comprobar si cumple uno de los tres (if (creixent) cout << "creixent";).

dagavi

#1 Eres FIBer? Me suena a Jutge ese ejercicio xD (si no, nada xD)

B

uopps pos va aser q si jaja xD

Battosai

No has superat el joc de proves.

B

dios vaya plaga jajaja

dagavi

MV is for fibers!!!

Y recuerda... has pensat que pasaria si l'entrada estigues buida?

ZaeRo

lo que tu estas buscando creo que es esto:
if (concicion1){}
else if (condicion2){}
else if (condicion3){}
else {}

es decir, si se cumple la "condicion1", solo hara lo q diga el primer if (y nada mas, no evaluara las otras condiciones), si no se cumple la "condicon1" evaluara la "condicion2", si se cumple hara lo q diga el segundo if, etc

al final, si no se han cumplido ni la "condicion1", ni la 2 ni la 3, hara lo que diga el "else"

espero que me haya explicado :/

BRaDoLH

Con que programas? como pueda ser que yo tambien programa en c++ y no tenga ni zorra de lo que pones?

es que vamos tiene un aire pero no es lo mismo, es como programar en visual basic que es bastante diferente.

Yo lo haria asi quizas es mas larga pero creo que mas completo.

#include<stdio.h>

main()
{
int anterior=0,contador=1,numero=0,sequencia=0,creciente=0,drecreixent=0;

printf("De cuantos numeros quieres hacer la sequencia? ");
scanf("%i",&sequencia);


printf("escribe un numero: ");
scanf("%i",&numero);
creixent=numero;
decreixent=numero;


while(contador<sequencia)
{
printf("escribe un numero: ");
scanf("%i",&numero);


          if(numero>anterior)
             {
              anterior=numero;
              creciente++;
              }
         else
           {
              if(numero<anterior)
                {
                  anterior=numero;
                   decreixent++;
                }
               else
                 {
                 printf("ERROR");
                 }
           }

 contador++
   }
 
if(creciente==sequencia)
  {
   printf("Serie creciente");
  }
 else
  {
    if(decreixent==sequencia)
      {
       printf("Serie decreixent");
       }
    else
      {
       printf("Serie equivocada");
      }
  }

}


PD: Podrian arreglar las tabulaciones :/

dagavi

#Edit: #15 No podemos usar esos comandos (printf, por ejemplo), tenemos que usar el cout (para ese ejemplo)

Si estás haciendo el 4.1 Clasificació de seqüencies (CLAS1)

Mi código, que pasó el juego de pruebas del Jutge, es este:

#include < iostream>
using namespace std;

int main() {
int x, y;
bool creixent=false;
bool decreixent=false;
bool uniforme=false;
bool res=false;
cin >> x;
while(not res and cin >> y) {
if(x == y and not creixent and not decreixent) uniforme=true;
else if(x < y and not decreixent and not uniforme) creixent=true;
else if(x > y and not creixent and not uniforme) decreixent=true;
else res=true;
x=y;
}
if(not res and uniforme) cout << "uniforme" << endl;
else if(not res and decreixent) cout << "estrictament decreixent" << endl;
else if(not res and creixent) cout << "estrictament creixent" << endl;
else cout << "res" << endl;
}

MaRaNeLL0

Si lo que mola de programar es tirarse hora probando hasta que te salga por eliminación... NO A LAS COPIADAS DE LOS DE LA UPC. xd

dagavi

Nosotros no nos copiamos, compartimos nuestros conocimientos :D

MaRaNeLL0

Sure , pronto pedireis espacio ftp a media-vida para poder colgar vuestros progamitas y trabajos xd

Dod-Evers

Si lo pones en castellano igual funciona... xDDDDDD

uplink

#15 el lenguaje que usas no es c++ sino c puro, es muy diferente.

Mañana a ver si me bajo el devcpp y pico el código para tu algoritmo.

Saludos.

uplink

Tambien tienes que puntualizar un matiz.

Estrictamente decreciente quiere decir que todo numero tiene que ser menos que el anterior, o que todo numero tiene que ser igual o menor que el anterior?

Supongo que será lo primero.

También otra cosa.

Lees toda la secuencia y luego el algoritmo te da el resultado que quieres, no?

Mañana tienes el código, que ahora me voy de halloween;)

dagavi

#20 Entonces seguro que le da el precioso mensaje de: No has superat el joc de proves." xD

(con que te dejes un puto punto o espacio ya te lo jode ¬¬)

Marvin

<script language="javascript">

function ordena_desc(puntero_entrada) {
            // Seteamos variables :D
	var resultado = new Array();
	var i = 0; 
	var ii = 0;
	var actual = null;
	var anterior = 0;
	var registro = null;
	var total = 0;
	while(puntero_entrada[total] != null) {
            // Contamos el puntero origen
		total++;
	}
	while(ii != total) {
            // iniciamos el bucle que almacena los resultados de el segundo..!
		while(puntero_entrada[i] != null) { 
		actual = puntero_entrada[i];
		if(actual > anterior && actual != '#') {
                    // Localizamos el numero mallor que no este tachado..
			registro = i;
			anterior = actual;
			pila_r = actual;
		}
		i++;
		}
            // Nos preparamos para otro ciclo guardamos resultado y tachamos posicion!
	i = 0;
	anterior = 0;
	resultado[ii] = pila_r;
	puntero_entrada[registro] = '#';
	ii++;
	}
	return resultado;
}
// Ejemplo de uso! cargamos cadena desordenada
entrada = new Array(1,2,3,4,8,265,3,99,5,66,3456,222,134,6789,2345,76878,345346,765765,235345,33,66,11,444,22,33,4565,2432,6666,24324,7676,8787,222,111,23,0,22,1132,1334,333,42,33);
    // Resolvemos el orden
res = ordena_desc(entrada);
i = 0;
    // imprimir resultado ..!
while(res[i] != null) {
	document.write('[' + res[i] + ']');
	i++;
}

</script>

B

.

dagavi

#25 En las normas de programación nos dicen que las variables las inicialicemos cuando las creemos, que es mejor escribir:

bool creix = true;
bool decreix = true;

que:

bool creix,decreix;
creix = decreix = true;

[exceptuando en casos "extremos" en las que tengas muchas variables]

sacker

FIBers al poder!! jaja

R

jo yo d momnto solo se hacer dibujkitos enel cuaderno
rombos y mierdas soy retrasao

Usuarios habituales