UTNianos

Versión completa: Problema de algoritmos!
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Tipeo el problema...

Un buque de carga traslada 100 contenedores a tres diferentes puertos del pais. Los puertos se identifican con los numeros 1, 2 y 3.
De cada contenedor que el buque traslade se registran los siguientes datos:
-ID del contenedor
-Peso del contenedor en Kg.
-Puerto de arribo (un valor de 1 a 3).
El ingreso de datos finaliza con la identificación de un contenedor igual a cero.
Se pide calcular e informar:
1)El peso total que el buque debe trasladar
2)La identificación del contenedor de mayor peso
3)La cantidad de contenedores que debe trasladar a cada puerto.


La cosa es así.... habiendo 100 items a tratar, mis dudas son:

a) y los pesos?
b) siendo tantos, como hago, tengo que declarar 100 items?
c) no se como encararlo
d) AYUDA !

Gracias de antemano!
Lo que tenes que hacer es que ingrese el usuario buques, hasta que la identificacion del mismo sea 0, esto lo haces con un while.

Para lo primero usas un contador que sume los pesos que vas ingresando, para la identificacion del mayor, es buscar un maximo en los pesos, es decir, vas comparando los distitnos pesos ingresados y el mayor es que el devolves, y lo otro es un contandor por cada puerto, es decir 3 contadores y que lo devuelvan esos 3 contenedores.

Haber si ahi con una idea sale.
como no hay "problema" de memoria, pones los datos de cada contenedor en un vector (array) de 100 registros
se supone que ya deberías saber trabajar con vectores, sumar los campos y buscar maximos
b) siendo tantos, como hago, tengo que declarar 100 items?


sabes lo que es una estructura?
Les hacen declarar las variables en el algoritmo?
totalpuerto1=0
totalpuerto2=0
totalpuerto3=0
mayorpeso = 0
pesototal = 0
for 1 to 100 {
(ingresar)cont.id, cont.peso cont.puerto

pesototal = pesototal + cont.peso

case (cont.puerto)
1 {
totalpuerto1 = totalpuerto1 + 1
}
2 {
totalpuerto2 = totalpuerto2 + 1
}
3 {
totalpuerto3 = totalpuerto3 + 1
}
if cont.peso > mayorpeso {
mayorpeso = cont.peso
mayorpesoid = cont.id
}

}
(mostrar)totalpuerto1,totalpuerto2,totalpuerto3,mayorpesoid,pesototal

Te lo arme a grandes rasgos un jueves a la noche. Espero que te sirva =)
hey gracias a todos por sus prontas respuestas!

Me olvide de poner algo, mi profesor es Bianchi, y no nos enseño Arrays... Hizo corte de control, salteo arrays (segun temario de SZ en su libro holamundo) y entro en el capitulo de Archivos.. el cual pude entender hasta la mitad porque despues mete todos ejs con arrays... hay alguna forma de no usar eso ?
no es necesario usar arrays. Nada mas tenes que declarar la variable cont como record

cont: Record
peso:integer;
id:byte;
puerto:byte;

No te pide que queden almacenados en memoria, ni almacenarlos te va a servir para despues, tampoco necesitas hacer una acceso directo a uno, ni modificarlos posteriormente.
Holas:

Según lo que contás, no harían falta vectores ni vectores de registros. Si revisás el ejercicio, sólo te pide informar datos al final de la carga pero es necesario guardarlos a todos, por lo tanto podés usar una variable que se pise en cada ciclo. Lo que veo que el enunciado está medio confuso. Si la carga de contenedores termina con ID nulo, entonces ojo que no son "100 contenedores" es "hasta 100 contenedores", lo que significa que puede haber menos. Por eso, como explica Diego Pedro, debés utilizar un while. Intentá empezar a hacerlo y fíjate si te trabás

¡Suerte!
si, un while hasta que id= 0
Ese ejercicio no necesita ni arrays ni archivos, es un ejercicio simple de ingreso y salida de datos, nada mas, con arrays se podria simplificar pero tampoco cambiaria demasiado el ejercicio
Hola amigos! concluí así a ver que les parece !

[Imagen: ?1285b7b8904be6b4ef3d1562094bb123o.jpg]

[Imagen: ?82f0d06d5500ef2550af25dd5c26397do.jpg]

Saludos!

bueno no se pudo subir la imágen, no hay algún lugar para subirla y que no se rompa el link?
Fijate en imageshack.us
si funciona con 5 funciona con 100 .
se puede hacer sin array.
con un for lo tenes listo.
Antes de ponerte a escribir , trata de entender el ejercicio y diagramartelo en la cabeza (o en un papel), trata de entender donde vas a usar cada dato que te piden (puede que hayan datos que ni utilices..)
#include <iostream>
#include <cstring>
#include <stdlib.h>
#include <conio.h>
using namespace std;

int main(){
float pesototal=0;
int cantContenedorPuertoUno=0,cantContenedorPuertoDos=0,cantContenedorPuertoTres=0;
char identificacionMaxPeso[10];
float pesoMaxActual=0;

struct buqueCarga{
char identificacion[10];
float peso;
int puerto;
}contenedor[100];

for(int i=0; i<100; i++){
fflush(stdin); //para q no se me llene el buffer
cout<<"***** Datos del contenedor: " << i+1 <<" *****"<<endl;
cout<<"Identificacion del contenedor: ";
cin.getline(contenedor[i].identificacion, 10, '\n');
cout<<"Peso del contenedor en kg: ";
cin>>contenedor[i].peso;
cout<<"Puerto de arribo (1,2 o 3): ";
cin>>contenedor[i].puerto;

//PUNTO 1) PESO TOTAL DEL BUQUE.
pesototal+=contenedor[i].peso;

//PUNTO 2) La identificación del contenedor de mayor peso
if(contenedor[i].peso > pesoMaxActual){
pesoMaxActual=contenedor[i].peso;
strcpy(identificacionMaxPeso, contenedor[i].identificacion);
}

//PUNTO 3) La cantidad de contenedores que debe trasladar a cada puerto.
if(contenedor[i].puerto==1)
cantContenedorPuertoUno++;
else
if(contenedor[i].puerto==2)
cantContenedorPuertoDos++;
else
if(contenedor[i].puerto==3)
cantContenedorPuertoTres++;
cout<<"\n";
}
cout<<"El peso total del buque de carga es: "<<pesototal<<endl;
cout<<"La identificacion del contenedor de mayor peso es: "<< identificacionMaxPeso <<endl;
cout<<"La cantitad de contenedores que debe trasladar al puerto UNO es: "<<cantContenedorPuertoUno<<endl;
cout<<"La cantitad de contenedores que debe trasladar al puerto DOS es: "<<cantContenedorPuertoDos<<endl;
cout<<"La cantitad de contenedores que debe trasladar al puerto TRES es: "<<cantContenedorPuertoTres<<endl;
getch();
return 0;
URLs de referencia