C/Visual C - Condicionales.

 
Vista:

Condicionales.

Publicado por Maximiliano (4 intervenciones) el 04/02/2018 15:58:02
Hola! estaba casualmente programando en C++, intentando practicar, dado que estoy hace poco con este lenguaje, y encontré un ejercicio de condicionales, que no estoy logrando resolver.
Claramente tengo un error a la hora de cumplir la condición que solicita.
Alguien podría ayudarme, si es que reconoce el error, remarcarlo...
Desde ya, muchas gracias.

Código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*leer 6 números de a 1 controlando que estén estrictamente creciente. al terminar imprimir un 0 o 1 según se haya
cumplido o no el orden preestablecido */
 
#include<iostream>
#include<stdio.h>
 
using namespace std;
 
int cont;
int n[6];
int i;
int main(){
 
	cout<<"Ingrese 6 valores de forma creciente: ";
	for(i=0;i<6;i++){
		cin>>n[i];
	}
	if(i+=1){
		cout<<"\n1";
	}else{
		cout<<"\n0";
		}
 
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 72
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Condicionales.

Publicado por juanki (31 intervenciones) el 04/02/2018 18:05:52
Hola

No es que el if esté mal, que lo está, es que simplemente el programa no hace lo que tu esperas.

En tu programa pides 6 valores al usuario, pero luego no los comparas para ver si siguen el orden. En el if lo que estás haciendo es una asignación, no una comparación.

A i le estás sumando 1, y como i en ese punto vale 6 (condición del bucle for) pasa a valer 7 y, para C/C++, cualquier número mayor que cero es true, por lo tanto la condición se va a cumplir siempre.

Lo que tienes que hacer es otro bucle en el que recorres el array y comparas cada número con el anterior. O directamente, después de pedir el número al usuario lo comparas con el que introdujo antes. Y, ¡¡ cuidado con los límites del array !!

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp
Val: 10
Ha aumentado su posición en 6 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Condicionales.

Publicado por vangodp (3 intervenciones) el 04/02/2018 18:07:12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
using namespace std;
 
int main() {
    /*leer 6 números de a 1 controlando que estén estrictamente creciente. al terminar imprimir un 0 o 1 según se haya
    cumplido o no el orden preestablecido */
 
 
    int n[6];
    int flag = 0;
    bool creciente = true;
 
    cout<<"Ingrese 6 valores de forma creciente: ";
    for(int i=0; i<6; i++){
        cin>>n[i];
 
        //garantisa que no se executa el else la primera vez en el lazo for, pues no se puede comparar n[0] con n[-1], eso da error en el programa, debe esperar a que i sea por lo menos i=1 para poder hacer n[1]<=n[0] o lo que es lo mismo n[i]<=n[i-1]
        if( !flag ){
            flag++;
        }else{
            if( n[i]<=n[i-1] ){
                creciente = false;
            }
        }
 
    }
 
 
    cout << "resultado " << creciente << endl;
 
    return 0;
}
Estudie el código y luego si tienes preguntas vuelves, pero primero analice el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Condicionales.

Publicado por Maximiliano (4 intervenciones) el 06/02/2018 11:04:05
Hola, gracias por responder, estuve viendo el código y no estaría entendiendo algunos detalles.

Las variables "Flag" y "Bool" y por lógica, no entendería el IF correspondiente a los mismos.

Si no estoy equivocado, el "Flag" lo que haría, es la comparación entre los valores ingresados por el usuario, con valores en forma creciente, pero la parte de: if ( !flag), no sabria que es el ! delante del flag...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar