Resultados 1 al 15 de 15

Ayuda Urgente c++

  1. #1 Ayuda Urgente c++ 
    Medio
    Fecha de ingreso
    Jan 2005
    Ubicación
    Venezuela "Pto Ordaz"
    Mensajes
    116
    Descargas
    0
    Uploads
    0
    Hola, tengo q realizar un trabajo un tp para una materia y no se bien como realizarlo, podrias ayudarme? Este es el enunciado:
    Dada la definición de la estructura candidato (con sus funciones miembros mínimas, si le
    faltan otras funciones para realizar el programa puede hacerlo):
    class candidato {
    private:
    char nombre[15];
    char apellido[15];
    char partido[10];
    int votos[5]; //almacena los votos recibidos en cada distrito
    public:
    int getvotos(int i); // retorna la cantidad de votos que logró el candidato
    char *getnombre(); // retorna el nombre del candidato
    char *getapellido(); // retorna el apellido del candidato
    char *getpartido(); // retorna el partido del candidato
    };
    Escriba un programa que dadas las elecciones de una ciudad que consta de 4 candidatos y 5 distritos y con los resultados de las últimas elecciones,

    Distrito can A Can B Can C Can D
    1 190 48 206 45
    2 180 20 320 12
    3 221 30 140 68
    4 432 65 821 97
    5 820 42 946 32
    imprimir la tabla con las cabeceras incluidas donde:
    *Se debe ingresar el numero de candidatos con sus respectivos nombres
    *Se debe ingresar el número de distritos
    *Los totales por distrito de cada candidato

    Calcular e imprimir el numero total de votos recibidos por cada candidato y el porcentaje que obtuvo segun los votos.

    Se debe mostrar los resultados individuales por cada candidato (Hacer un menu)
    Se debe reflejar el candidato ganador.

    Se debe utilizar funciones y procedimientos para la elaboracion de este programa.

    Espero que me ayuden a resolver este problema, nunca he trabajado con funciones y procedimientos, me dieron solo un dia para hacerlo, ya que tengo la materia aplazada por problemas personales que no me dejaron asistir a la uny, es la unica manera en la que ellos dicen que me pueden ayudar que tal. bueno espero respuestas!
    Aqui estamos para aprender y para enseñar!
    Citar  
     

  2. #2  
    Medio
    Fecha de ingreso
    Jan 2006
    Mensajes
    98
    Descargas
    0
    Uploads
    0
    La verdad es que antes de empezar a explicarte lo que se me ocurre me gustaria entender mejor el enunciado asi que:

    1.La tabla que pones de las ultimas elecciones es un ejemplo de como deberia
    ser el resultado o es un fichero del que leeras los datos??
    2.Los métodos de la clase candidato vienen implementados ??
    Citar  
     

  3. #3  
    Medio
    Fecha de ingreso
    Jan 2005
    Ubicación
    Venezuela "Pto Ordaz"
    Mensajes
    116
    Descargas
    0
    Uploads
    0
    La tabla es de como deberia imprimir en pantalla los resultados de las elecciones, calculando la suma y el porcentaje de los votos cada candidato por cada distrito.

    Se debe de imprimir el candidato ganador y la cantidad de votos que obtuvo. aqui dejo algo que he hecho:


    #include <stdio.h>

    int main()
    {
    char nombre[6][6];
    static float votos[6][6];
    int i, j, n, fil, col,ganador;
    printf("Introduce numero de Candidatos: \n");
    scanf("%d", &n);


    for(i=0; i<n; i++)

    {
    printf("\nCandidatos %d: ", i+1);
    gets(nombre[i]);
    }


    puts("\nIntroducimos votos tomando en cuenta el orden por distrito\n 'Presione Enter al Ingresar cada valor':\n");
    for(i=0; i<n; i++)
    {
    fflush(stdin);
    printf("\nCandidato %d: %s\n", i+1, nombre[i]);
    col = 2;
    for(j=0; j<5; j++)
    {
    scanf("%f", &votos[i][j]);
    votos[i][5] += votos[i][j];
    col += 10;
    }

    }
    for(i=0; i<5; i++)
    for(j=0; j<n; j++)
    votos[n][i] += votos[j][i];



    printf("Cndidto");
    printf(" Dist1 Dist2 Dist3 Dist4 Dist5 Total\n\n");
    for(i=0; i<n; i++)
    {

    printf("\n%s ", nombre[i]);
    printf("\t");
    for(j=0; j<5; j++)
    printf("%g\t", votos[i][j]);
    printf("%g", votos[i][5]);
    }

    ganador=0;
    printf("\n\nPorcentajes por Candidato.\n\n ");
    printf("Candi1 Candi2 Candi3 Candi4 Candi5\n\n");
    for(i=0; i<5; i++)
    printf(" %.1f\t", votos[i][5]/5);
    printf("\n\n");
    for(i=0; i<n; i++)
    if (votos[i][5]>ganador)

    ganador=votos[i][5];

    printf("\nEl ganador Obtuvo %d Votos\n\n",ganador);
    return 0;

    }

    Estoy hecho un 8, despues de dos candidatos se sale y no muestra los resultados ni nada. Y solo logre imprimir los votos del ganador pero no el nombre del mismo... y de verdad no tengo idea de si estoy ytilizando funciones.! Por favor ayudenmeeeeeeeee
    Aqui estamos para aprender y para enseñar!
    Citar  
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Dec 2001
    Ubicación
    Galiza
    Mensajes
    3.129
    Descargas
    0
    Uploads
    0
    Revisa las variables que has usado, creo que usas varias veces la misma y anidadas por lo que no estoy seguro de si se machacan.
    Citar  
     

  5. #5  
    Medio
    Fecha de ingreso
    Jan 2006
    Mensajes
    98
    Descargas
    0
    Uploads
    0
    La verdad es que el codigo que propones no lo veo demasiado bien ya que hay cosas que creo que se podrían simplificar (no entiendo porque usas una matriz de 6x6 para "nombres" por ejemplo). Primero sería decidir si lo haces en C o C++ ya que para la clase candidato que propones es necesario usar C++ y el manejo que realizas sobre las cadenas y todo lo demas se simplificaría. Por otro lado creo que lo mas facil sería usar la memoria dinámica, creando una matriz de mxn, donde m es el numero de candidatos y n es el numero de distritos y en cada celda almacenas el numero de votos por candidato/distrito; para tener una relación de esa matriz con los nombres de los candidatos puedes crear un vector de nombres como lo haces, pero de una sola dimensión donde la posicion "i" tendrá el nombre del candidato de la posición [i][k] de la matriz donde k varia desde 0 hasta n. No has usado funciones en tu código y en realidad se trataría de usar una por ejemplo para crear la matriz que te propongo pasandole como parametros el numero de candidatos y el numero de distritos; otra podria ser la de leer los nombres introducidos por el usuario, otra para leer el numero de votos para cada candidato y otra que seria el menu para imprimir los candidatos.
    Prototipos que te propongo serian:
    * void CrearMatriz(int **M, int candidatos, int distritos);
    /* M es la matriz que será de entrada-salida*/
    * void introducir_nombres(char *nombres);
    /*le pasamos como parametro la referencia al vector de nombres que
    rellenaremos y ha sido creado anteriormente en el programa principal o en
    una función con memoria dinámica tambien*/
    * void introducir_votos(int **M);
    /*le pasamos solamente la matriz para introducir los votos por candidato/distrito*/
    * void menu();

    Como se ve, esto es una propuesta para el código en C/C++ donde para C++ habrían algunos cambios en paso de parametros y el manejo de memoria dinámica sería mucho mas facil. Espero haberme explicado bien, sino aqui estamos para aclarar mas cosas. Saludos
    Citar  
     

  6. #6  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    Cita Iniciado por Polimeron
    ....no entiendo porque usas una matriz de 6x6 para "nombres" por ejemplo....
    La matriz de 6x6 la usa para 6 nombres de 6 caracteres cada uno, suponiendo que hay 6 candidatos.

    DLANOR aca te pongo un codigo, pero no usa la clase que te da. es algo similar a lo que hiciste tu, pero anda bien.
    No se si te va a servir, creo que es medio tarde pero por lo menos para no quedarte con la duda.

    Código:
    #include "conio.h"
    #include <iostream.h>
    #include <stdlib.h>
    
    float porcent(int total, int parte)
    {
    	float a;
    	a=(parte*100)/total;
    	return a;
    }
    
    void main()
    {
    	int numcandi,i,j;
    	char nombre [10][10];
    	char apellido [10][10];
    	int votos [10][5];
    	int votof [10];
    	int total=0;
    	float porc[10];
    
    	clrscr();
    	gotoxy(2,2);
    	cout<<"Introdusca el numero de candidatos:";
    	gotoxy(38,2);
    	cin>>numcandi;
    	cout<<"\n";
    	for(i=1 ; i<numcandi+1 ; i++){
    	gotoxy(4,4+(i-1)*3);
    	cout<<"Nombre candidato "<<i<<": ";
    	cin>>nombre[i];
    	gotoxy(4,4+(i-1)*3+1);
    	cout<<"Apellido candidato "<<i<<": ";
    	cin>>apellido[i];
    	cout<<"\n";
    	}
    	clrscr();
    	gotoxy(2,2);
    	cout<<"Ingreso de votos:\n";
    	for(i=1 ; i<numcandi+1 ; i++)
    	{
    		gotoxy(4,(i-1)*7+4);
    		cout<<"Ingrese los votos de "<<nombre[i]<<" "<<apellido[i];
    		for(j=1;j<6;j++)
    		{
    			gotoxy(6,(i-1)*7+4+j);
    			cout<<"Distrito "<<j<<": ";
    			cin>>votos[i][j];
    			cout<<"\n";
    		}	
    
    	}
    	clrscr();
    	for(i=1;i<numcandi+1;i++)
    	{
    		votof[i]=0;
    		for(j=1;j<6;j++)
    		{
    		votof[i]+=votos[i][j];
    		}
    		gotoxy(2,i*2);
    		cout<<nombre[i]<<" "<<apellido[i]<<": "<<votof[i]<<" votos.";	
    		total+=votof[i];
    	}
    	gotoxy(2,2*numcandi+3);
    	cout<<"Hubo un total de "<<total<<" votos.";
    	for(i=1;i<numcandi+1;i++)
    	{
    	gotoxy(2,2*numcandi+4+i*2);
    	cout<<nombre[i]<<" "<<apellido[i]<<": "<<porcent(total,votof[i])<<" % del total.";	
    	}
    }

    Chau saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  7. #7  
    Medio
    Fecha de ingreso
    Jan 2005
    Ubicación
    Venezuela "Pto Ordaz"
    Mensajes
    116
    Descargas
    0
    Uploads
    0
    Gracias a todos! No tuve suerte con la materia, el programa me dice que GOTOXY y CLRSCR son variables que no estan declaradas, me da esos dos errores y un Warning de la conversion int a float. dime como puedo resolver el problema! como declaro estas variables, o porque me da esos errores? que son GOTOXY y CLRSCR?
    Aqui estamos para aprender y para enseñar!
    Citar  
     

  8. #8  
    Co-Admin HackHispano.com Avatar de clarinetista
    Fecha de ingreso
    Jan 2004
    Ubicación
    HackHispano/SM
    Mensajes
    7.773
    Descargas
    31
    Uploads
    8
    Cita Iniciado por Marchi
    #include "conio.h"
    #include <iostream.h>
    #include <stdlib.h>
    Asi mejor:
    Código:
    #include <conio.h>
    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>
    Por eso seguramente te dara el problema, ya que gotoxy pertenece a esa librería del c estándar.Lo que hace es poner el cursor en las cordenadas pasadas como parametro.
    Con la otra, lo mismo, son funciones del c contenidas en esas librerías.Esta te borra la pantalla y coloca el cursor en la posición (1,1)
    Saludos
    Última edición por clarinetista; 14-07-2006 a las 14:36
    Citar  
     

  9. #9  
    Co-Admin HackHispano.com Avatar de clarinetista
    Fecha de ingreso
    Jan 2004
    Ubicación
    HackHispano/SM
    Mensajes
    7.773
    Descargas
    31
    Uploads
    8
    PD: El warning sera causado por una pérdida de valor de decimales seguramente.
    Citar  
     

  10. #10  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    Pero pasar, de un entero a un float, no puede provocar perdida de precision, sino no se haria y tiraria directamente un error.

    Ya me di cuenta, es por que la operacion entre enteros, devuelve un entero (total, parte).

    Código:
    float porcent(int total, int parte)
    {
    	float a;
    	a=(parte*100)/total;
    	return a;
    }
    Si se declara asi, no aparece el warning y ademas el porcentaje es mas preciso


    Código:
    float porcent(float total, float parte)
    {
    	float a;
    	a=(parte*100)/total;
    	return a;
    }

    Y lo de conio.h , es por que tenia el archivo en cualquier parte, pero no me lo tomaba desde donde debia.


    Chau saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  11. #11  
    Co-Admin HackHispano.com Avatar de clarinetista
    Fecha de ingreso
    Jan 2004
    Ubicación
    HackHispano/SM
    Mensajes
    7.773
    Descargas
    31
    Uploads
    8
    Cita Iniciado por Marchi
    Y lo de conio.h , es por que tenia el archivo en cualquier parte, pero no me lo tomaba desde donde debia.
    Chau saludos
    Por eso la programacion no es mi fuerte, porque soy mas despistao que un pingüino en el Sahara.
    Al principio en clase de C me dejaba librerias sin conocimiento
    Que chandrio
    Citar  
     

  12. #12  
    Medio
    Fecha de ingreso
    Jan 2005
    Ubicación
    Venezuela "Pto Ordaz"
    Mensajes
    116
    Descargas
    0
    Uploads
    0
    error C2065: 'clrscr' : undeclared identifier
    error C2065: 'gotoxy' : undeclared identifier

    esos son los dos errores que me da el programa. Hay alguna diferencia en #include <conio.h> y #include "conio.h", encerrar en comillas, he querido provar el programa pero no me deja por esos errores, en C hay algun codigo que omita los errores asi como en Visual Basic?
    Aqui estamos para aprender y para enseñar!
    Citar  
     

  13. #13  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    La diferencia es que con <> busca directamente en la carpeta include que tenga el compilador, y con "" primero busca en la carpeta donde esta el archivo que se va a compilar (en el que se hizo la declaracion).
    Si no te funciona de nnguna forma, primero asegurate de que tengas el archivo y si existe pone la direccion entera.

    A mi me pasaba con el turbo c++ en el ide para dos, que nunca los encontraba a los archivos de cabecera, al final no volvi a usar el ide y directamente usaba el compilador.
    Pero supongo que solo era configurarlo.


    Dlanor, supongo que con "....en C hay algun codigo que omita los errores asi como en Visual Basic?....." te referiras al "On Error Resume Next", pero lo que hace esto es salir de un procedimiento en caso de haber un error en tiempo de ejecucion, sin salir del programa.

    Los errores que te da al compilar en c/c++ no son este tipo de errores, sino errores de sintaxis o cualquier otro que no permita la compilacion, pero lo mismo sucede en vb.



    conio.h creo que es no estandar, corrijanme si me equivoco.


    Chau saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  14. #14  
    Moderador HH
    Fecha de ingreso
    Feb 2002
    Ubicación
    México
    Mensajes
    1.156
    Descargas
    4
    Uploads
    0
    Cita Iniciado por Marchi
    conio.h creo que es no estandar, corrijanme si me equivoco.
    Chau saludos
    No, conio.h es una librería exlusiva de Borland, por lo tanto, para usarla es necesario tener el compilador Borland C. Tal vez ese sea el problema, que el compilador que usa es otro. La funcion clrscr se puede sustituir por system("cls"); en caso de windows y system("clean"); en caso de linux.
    Mientras el mundo permanezca no acabarán la fama y la gloria de México-Tenochtitlan
    Citar  
     

  15. #15  
    Co-Admin HackHispano.com Avatar de clarinetista
    Fecha de ingreso
    Jan 2004
    Ubicación
    HackHispano/SM
    Mensajes
    7.773
    Descargas
    31
    Uploads
    8
    En el caso que te pronone Giskard deberias usar la libreria <dos.h>.
    Citar  
     

Temas similares

  1. aYuda urgente
    Por luigui_benja en el foro GENERAL
    Respuestas: 8
    Último mensaje: 02-09-2009, 21:50
  2. Ayuda Urgente!!!!!!
    Por Undertaker15 en el foro OFF-TOPIC
    Respuestas: 2
    Último mensaje: 06-08-2007, 07:39
  3. ayuda urgente
    Por rebeca en el foro TELEFONÍA MOVIL
    Respuestas: 11
    Último mensaje: 04-10-2006, 23:49
  4. Ayuda urgente
    Por alcaide en el foro INTRUSION
    Respuestas: 14
    Último mensaje: 31-03-2005, 16:14
  5. Ayuda Via Urgente !!
    Por juanma.m.d en el foro DIGITAL+
    Respuestas: 7
    Último mensaje: 18-02-2003, 17:52

Marcadores

Marcadores