Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[AYUDA] Ejercicio Algoritmos y Estructura de datos en c++
Autor Mensaje
agustinjb Sin conexión
Profesor del Modulo A
Con estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 272
Agradecimientos dados: 69
Agradecimientos: 10 en 3 posts
Registro en: Aug 2012
Mensaje: #1
Exclamation [AYUDA] Ejercicio Algoritmos y Estructura de datos en c++ Otro Algoritmos y Estructuras de Datos
Buen día!

bueno, tengo un problema hay un ejercicio que debemos entregar en c++ que no puedo resolver porque el profesor no me permitio hacerlo usando vectores ya que "no se vio en clase".

El ejercicio dice:

"Dado N cantidad de numeros, informar el mayor, menor y posicion"

Pude informar el menor y el mayor pero no puedo lograr informar la posición. porque usando contadores, siempre o me dice la cantidad de mayores o la cantidad de ingresados.. pude hacer casos "optimos" donde el ultimo era el mayor o el primero y andaba pero si variaba mucho eso no lo pude sacar.

Aca esta el codigo! si me pueden dar una mano genial!


#include <stdlib.h>
#include <conio.h>
#include <iostream>
using namespace std;
/* Ejercicio 22:

- Dados N valores

a) informar el mayor
b) el menor
c) en que posición del conjunto fueron ingresados.*/

int nValores;
int i;
int valores;
int mayor = 0;
int menor = 0;
int flag;
int countMayor=0;
int countMenor=0;

int main(){

cout << "Cuantos valores desea ingresar?" <<"\n"; //pide la cantidad de valores a ingresdar ya que dice "dado N valores"
cin >> nValores;

while (nValores <=0){
cout << "Ingrese un valor mayor a 0" << "\n"; //validacion por si ingresa un valor menor a 0
cin >> nValores;
}else{
break;
}

cout << "Ingrese un valor" << "\n";
cin >> flag; // registro del primer valor

mayor = flag; // inicializacion de mayor
menor = flag; // nicializacion de menor

for(i=0; i<nValores-1; i++){ //nValores -1 porque ya se ingreso 1 anterioridad

cout << "Ingrese un valor" << "\n";
cin >> valores; //agrega el segundo valor a valores

if (valores >= mayor){ //compara el nuevo valor con Mayor
mayor = valores; //Si es mayor asigna el valor agregado como el mayor

// countMayor++; -Revisar- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
if (valores <= menor) { //compara el nuevo valor con Menor
menor = valores; //Si es menor asigna el valor agregado como el menor

// countMenor++; - revisar- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
}


cout << "El Mayor es " << mayor << /*" En la posicion " << (countMayor+1) <<*/ "\n" ;
cout << "El Menor es " << menor << /*" En la posicion " << (countMenor+1) << */"\n" ;

}


03-05-2016 10:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Manopla_Xeneize Sin conexión
Empleado de Fotocopiadora
Mazca coca que ya estamos alto!!!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 28
Agradecimientos dados: 33
Agradecimientos: 81 en 13 posts
Registro en: Dec 2015
Mensaje: #2
RE: [AYUDA] Ejercicio Algoritmos y Estructura de datos en c++
Hola, probá asignando "i" a los contadores dentro de cada if. A medida que avanza el for se va marcando la posición, avisame su funca jaja. Saludos.

if (valores >= mayor) //compara el nuevo valor con Mayor
{ mayor = valores; //Si es mayor asigna el valor agregado como el mayor
countMayor=i; //Le asigna a tu contador la posición del ciclo
}

if (valores <= menor) //compara el nuevo valor con Menor
{ menor = valores; //Si es menor asigna el valor agregado como el menor
countMenor=i; //Le asigna a tu contador la posición del ciclo
}
03-05-2016 10:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Manopla_Xeneize recibio 1 Gracias por este post
agustinjb (03-05-2016)
agustinjb Sin conexión
Profesor del Modulo A
Con estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 272
Agradecimientos dados: 69
Agradecimientos: 10 en 3 posts
Registro en: Aug 2012
Mensaje: #3
RE: [AYUDA] Ejercicio Algoritmos y Estructura de datos en c++
(03-05-2016 10:25)Manuel_Salinas escribió:  Hola, probá asignando "i" a los contadores dentro de cada if. A medida que avanza el for se va marcando la posición, avisame su funca jaja. Saludos.

if (valores >= mayor) //compara el nuevo valor con Mayor
{ mayor = valores; //Si es mayor asigna el valor agregado como el mayor
countMayor=i; //Le asigna a tu contador la posición del ciclo
}

if (valores <= menor) //compara el nuevo valor con Menor
{ menor = valores; //Si es menor asigna el valor agregado como el menor
countMenor=i; //Le asigna a tu contador la posición del ciclo
}

Probe haciendo eso y cuando informa la posicion siempre devuelve un valor menos, (si fuera la posicion 5, muestra 4)

cuando quiero informarlo alfinal pruebo
cout << "posicion" << (countMenor+1);

e igual me devuelve un valor menos (no se lo agrega),

probe poniendo

<< ++countMenor

fuera del for

countMenor +=1;
countmenor = countMenor+1;
countmenor +1;

y cuando lo informo siempre devuelve una posición menos.
03-05-2016 11:03
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Manopla_Xeneize Sin conexión
Empleado de Fotocopiadora
Mazca coca que ya estamos alto!!!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 28
Agradecimientos dados: 33
Agradecimientos: 81 en 13 posts
Registro en: Dec 2015
Mensaje: #4
RE: [AYUDA] Ejercicio Algoritmos y Estructura de datos en c++
Si luego de la validación arrancás con el for directamente, y no le restas 1 a nValores?. Cuando declarás "flag" asignale valor cero, usalo de llave. Entonces dentro del for, empezás un if, si es igual al valor asignado a flag, asignás el valor de n al máximo y al mínimo y en el mismo sector, asignás 1 a flag. Entonces cuando de otra vuelta de ciclo for, la llave no va a ser 0 y gira al else, ahí comparás el valor de n con tus máximos o mínimos y vas incluyendo en tu contador a "i" según el caso, max o min. Eso lo usé en varios ejercicios de ese tipo y suele funcionar bien.
04-05-2016 00:01
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Lea0923 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Resistencia

Mensajes: 1
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Mar 2016
Mensaje: #5
RE: [AYUDA] Ejercicio Algoritmos y Estructura de datos en c++
Simplemente crea dos enteros donde guardarás la posicion del mayor y menor, y luego en los if donde comprobas los asignas (dentro del for). Suponte las variables int posMayor,posMenor; Sería:

if (valores >= mayor){ //compara el nuevo valor con Mayor
mayor = valores; //Si es mayor asigna el valor agregado como el mayor
posMayor=i;
}
if (valores <= menor) { //compara el nuevo valor con Menor
menor = valores; //Si es menor asigna el valor agregado como el menor
porMenor=i;
}
04-05-2016 06:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)