UTNianos

Versión completa: ayuda ejercicio algoritmos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
buenas gente, tengo una duda con este tipo de ejercicio de la guia de algoritmos 2014, el mismo es:

/* Ejercicio 17
En un torneo de fútbol participan k equipos. El torneo se juega con el sistema de “todos contra todos”.
Por cada partido en el que participa un equipo se dispone de la siguiente información:
- código de equipo ( codEq ) y
- código de resultado (“P” = perdido, “E” = empatado, “G”= ganado).

Se dispone de un lote de datos conteniendo todos los resultados del torneo, agrupados por codEq .
1. Desarrollar el programa que imprima, por cada equipo, su código y el puntaje total que
obtuvo considerando que suma 3 puntos por cada partido ganado y 1 punto por cada
partido empatado.
2. Informar, al finalizar el ingreso de datos y sin discriminar por equipo, cuántos partidos
resultaron ganados, cuántos resultaron empatados y cuántos resultaron perdidos.
3. Validar la consistencia del lote de datos; esto es: la cantidad de partidos ganados (pg)
debe ser igual a la cantidad de partidos perdidos (pp) y cualquiera de estas cantidades
sumada a la cantidad de partidos empatados (pe) debe ser igual que k(k-1): 2pg+pe=k(k-1) */


mi duda es si los datos los tengo que ir ingresando a traves del programa que creo (si es asi que estructura me conviene para guardarlos) o si tengo ya un archivo con los datos de los partidos en cuyo caso tendria que leerlos. mi duda es esa a modo general, despues con el codigo me llevo dentro de todo bien. desde ya muchas gracias
Si no dicen nada, supongo que será a gusto de quien lo está resolviendo. Suena más bien a un ejercicio de corte de control (por estar agrupado por codEq) donde se van ingresando los códigos de los partidos y haciendo lo que te piden en los items.
En verdad es indistinto, el algoritmo debería ser independiente de de dónde vienen los datos, pero por simplicidad podés hacer que se ingresen por teclado.
No necesitás ninguna estructura en particular más que algunas variables.
Te Subo el Algoritmo...

Fíjate si te sirve...

[attachment=9437]

Saludos
Me parece que subir ejercicios resueltos para resolver dudas no es la idea. Hay que ayudar a pensar en las implicancias del enunciado más que tirarle un algoritmo ya hecho.


Pero seguramente sebainge estará encantado de que le ahorren el trabajo de pensar.
(31-08-2014 18:10)pcajedrez escribió: [ -> ]Te Subo el Algoritmo...

Fíjate si te sirve...



Saludos

te agradezco por la ayuda, lo unico que no me queda claro , en la funcion proceso cuando pasas los parametros pg , pe y pp al tipo de dato le pones un &, en c no me lo toma; que puede ser? gracias pcajedrez
Lo que sucede es que en nuestra cursada usamos c++...

Osea esas variables se pasan por referencia (pueden ser modificadas por la función) cosa que c no soporta nativamente...
De todas maneras está mal la sintaxis. Cuando escribís el encabezado de la función no lleva & sino *, para marcar que lo que se recibe es un puntero. Cuando los llamás tenés que llamarlo con & que es el operador para obtener la dirección de una variable. En C y C++ se usa & pero vos, pcajedrez, lo estás usando mal.

Pero, ¿ves a lo que me refería? Ahora están hablando de la sintaxis y no de cómo se resuelve el problema.

//============================================================================
// Name : algoritmos_17.cpp
// Author : Javier Villalba
// Creditos : A la Isla de Trabajo
// Copyright : Algoritmos y Estructura de Datos 2014
// Description : Ejercicio 17
//============================================================================

#include <iostream>
using namespace std;

//Prototipos de Funciones
void Proceso(int, int, int, int&, int&, int&);
void Validar(int, int, int);

//Funcion Proceso
void Proceso(int k, int p, int codEq, int& pg, int& pe, int& pp)
{
int s = 0;

//Variable para Acumular Puntaje por Equipo
int puntaje = 0;
while (s < p)
{
//Variable para Resultado
char resultado;

cout << "Ingrese Resultado de Partido: " << endl;
cin >> resultado;
switch (resultado)
{
case 'G':
puntaje = puntaje + 3;
pg = pg + 1;
break;
case 'E':
puntaje = puntaje + 1;
pe = pe + 1;
break;
default:
pp = pp + 1;
}

s = s + 1;
p = p - 1;
}
cout << "Codigo de Equipo: " << codEq << endl;
cout << "Puntaje Total del Equipo: " << puntaje << endl;
}

//Funcion Validar
void Validar(int pg, int pe, int k)
{
if (2 * pg + pe == k * (k - 1))
{
cout << "Valido" << endl;
}
else
{
cout << "No Valido" << endl;
}
}

int main()
{
//Declaracion de Variables
int k = 0;
int p = 0;
int cont = 0;
int codEq = 0;

//Variables para Acumuladores Generales
int pg = 0;
int pe = 0;
int pp = 0;

//Entrada de de n Cantidad de Equipos
cout << "Ingrese la cantidad de equipos: " << endl;
cin >> k;

//Partidos que jugo cada Equipo
p = (k * (k - 1) / 2);

//Proceso de Cargado de Equipo y Resultados
while (cont < k)
{
cout << "Ingrese Codigo de Equipo: " << endl;
cin >> codEq;
Proceso(k, p, codEq, pg, pe, pp);
cont = cont + 1;
}

//Muestro los Cuandos Partidos fueron Ganados, Empatados y Perdidos
cout << "Partidos Ganados: " << pg << endl;
cout << "Partidos Empatados: " << pe << endl;
cout << "Partidos Perdidos: " << pp << endl;

//Validacion
Validar(pg, pe, k);

return 0;
}


Este es el código en c++ funcionando... Ya de por sí los hay ejercicios de la guía de algoritmos hay algunos que son más para debuggear que para pensar (y a eso además agregarle la ambigüedad de los enunciados)... Esto debido a la pérdida de tiempo que supone la implementación y a las mañas de cada lenguaje...

Importa el código ?? Definitivamente no... es un plus... Importar estar ochocientas horas para resolver un algoritmo? Creo que si y que no... llega... un punto que es contraproducente... Basta con verlo y tratar de entenderlo...
Ah, mirá, es cierto, en C++ se escriben así ¯\_(ツ)_/¯
Me rectifico sobre aquello de que lo usaste mal.

Pero para el caso es lo mismo, hasta ahora no sabemos si sebainge entendió por qué está hecho como está hecho o no.
(01-09-2014 06:32)pcajedrez escribió: [ -> ]Lo que sucede es que en nuestra cursada usamos c++...

Osea esas variables se pasan por referencia (pueden ser modificadas por la función) cosa que c no soporta nativamente...

ahi lo solucione, hice un puntero a los valores a modificar y ahora anda perfecto. muchas gracias
URLs de referencia