Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Pequeño Problema que no puedo resolver =/  (Leído 875 veces)
0 Usuarios y 2 Visitantes están viendo este tema.
santiago89
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 9

Forista


« en: 03/02/2006, 01:56:23 »

Sin mas que decir que soy un novato en esto y ademas de que estoy leyendo paralelamente articulos de algoritmia y de c/c++ paso a escribir el problema.

Problema:
-------------

En las elecciones a gobernador de una provincia se computan los votos de los ciudadanos de 15 departamentos, quienes deben elegir entre 11 candidatos de igual número de partidos. Por cada voto se ingresa: cod dpto y cod partido elegido. Esta secuencia termina cuando se ingresa el codigo de departamento 0(cero). Determine e informe:

a) El codigo del partido que triunfo en la eleccion provincial y el %(porcentaje) de votos obtenidos.
b) El nro. de votos obtenidos por cada partido en el dpto. 6.
c) El total de votos positivos del partido 4 sumando departamentos 1, 2 y 10.

Nota: utilice funciones para la resolucion.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bueno este el problema, tal vez sea un poco bobo para algunos preo realmente me esta dando dolores de cabezas a mi en estos momentos. Si alguien tiene alguna idea de como resolverlo se lo agradeceria. Saludos
En línea
santiago89
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 9

Forista


« Respuesta #1 en: 03/02/2006, 16:16:41 »

Estoy molestando otra ves por aca, quiero decirles que ya pude con una parte del problema. Resolvi en parte el punto a.

Aca dejo el codigo para que lo vean y me digan si es posible mejorarlo:

Código:
int part_g(int a[11][15])
{
    int m=0, n=0, cod=0, res[11]={0};
    for(int i=0;i<11;i++){
            for(int j=0, l=0;j<15, l<11;j++, l++){
                    if(a[i][j]>m){
                           m+=a[i][j];
                           res[l]=m;
                           m=0;
                           }
                    }
            }
    for(int k=0; k<11;k++){
            if(res[k]>n){
                  n=res[k];
                  cod=k+1;
                  }
            }
           
    cout<<cod;
}

Lo que no pude hacer es calcular el % de votos obtenidos y que devolviera todo mediante un return Avergonzado, y para el punto b ahora tengo las cosas un poco mas claras(al menos eso creo Indeciso).
En línea
Maximiliano
Savant
*******

Prestigio: 2
Desconectado Desconectado

Sexo: Masculino
Mensajes: 44



« Respuesta #2 en: 04/02/2006, 07:09:50 »

santiago, segun tengo entendido, ese enunciado, primero te pide q declares la esctructura de entrada, por ejemplo :

struct entrada { //suponemos q se ingresan solo entedes, como codigo, partido y Codigo de partido.
  int cod;
  int dpto;
  int codpartido;
}

Despues, te pide q hagas un informe ... Lo primero q tenes q hacer, es separar cada punto, y analizarlo como separado, pero no olvidar antes declarar cada estructura q vallas a usar, estos ejericios se basan mucho en logica y en declaracion de esctruturas, ahora estoy tomado, no tengo ganas de pensar en el problema, pero si mañana tengo tiempo te posteo una posible solucion Lengua
saludos.


En línea


Dicen que la tristeza es como una lluvia que riega el alma pasando en la tierra lavando todas sus miserias ...
santiago89
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 9

Forista


« Respuesta #3 en: 06/02/2006, 00:48:52 »

OK!, como quieras. Realmente te lo agradeceria si me pasas alguna solucion como para darme cuenta de como debo encarar futuros problemas.


saludos.
En línea
santiago89
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 9

Forista


« Respuesta #4 en: 07/02/2006, 01:53:03 »

Aca dejo lo poco que he logrado hacer para el punto a:

Código
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int part_g(int a[11][15])
{
   int m=0, n=0, cod=0, res[11]={0};
   for(int i=0;i<11;i++){
           for(int j=0, l=0;j<15, l<11;j++, l++){
                   if(a[i][j]>m){
                          m+=a[i][j];
                          res[l]=m;
                          m=0;
                          }
                   }
           }
   for(int k=0; k<11;k++){
           if(res[k]>n){
                 n=res[k];
                 cod=k+1;
                 cout<<res[k]<<endl;
                 }
           }
   cout<<cod;
}
 
int main(void)
{
   int cd=0, cp=0, v[11][15]={0};
   do
   {
              cout<<"Ingresa el cod. de dpto: ";
              cin>>cd; cd-=1;
              if(cd==-1)break;
              cout<<"Ingresa el cod. de partido: ";
              cin>>cp; cp-=1;
              if(cd!=-1 && cp!=-1){
                        v[cp][cd]+=1;
                        }
   }while(cd!=-1 && cp!=-1);
 
   part_g(v);
 
   system("PAUSE");
   return EXIT_SUCCESS;
}
 
 
En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #5 en: 07/02/2006, 11:28:40 »

Perdon por responder tan tarde, ando medio desorganizado.

Primeramente, la función part_g deberia ser de tipo void, no retornas nada.
Segundo, si lees el enunciado dice que el centinela o valor para el cual se sale del programa es ingresar el valor 0. Existen varias formas de lograrlo. A ver cual se te ocurre sin tener que modificar todo el codigo.
Y por ultimo, tomando en cuenta que has resuelto el punto a, los demás puntos son más sencillos.
Para el punto b (El nro. de votos obtenidos por cada partido en el dpto. 6.) solo debes realizar un conteo para la columna 5 de tu matriz de datos. Tomando en cuenta que [partidos][departamentos].

Código
int t = 0;
for(int j = 0; j < 11; j++)
 t += a[j][5];
return t;

Y para el punto c (El total de votos positivos del partido 4 sumando departamentos 1, 2 y 10.)

Código
return a[3][0] + a[3][1] + a[3][9];

Espero no haberme equivocado mucho. Cualquier cosa decinos.
Hasta la proxima!
En línea

Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: