(Consulta) Ejercicio en C - Errores que no logro entender.

Iniciado por palacio29, 21 Agosto 2016, 17:33 PM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

Hola

Estaba haciendo un ejercicio de mi practica de informatica. El ejercicio es el siguiente



El codigo que hice hasta ahora es el siguiente

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void CARGADATOS(int arreglo2[5][8],int fila);
void IMPRIMIR(char arreglo1[5][20],int arreglo2[5][8]);
int main()
{
    char arreglo1[5][20];                ///ARREGLO DONDE GUARDO NOMBRES DE EQUIPOS
    int arreglo2[5][8];                  ///ARREGLO DONDE GUARDO LOS NUMEROS
    char letra='4';
    int bandera=0;
    int fila=0,columnachar=0;


    while (arreglo1[fila][0]!='\0' && bandera==0 && fila<5)
    {
        printf ("\nIngrese el nombre del equipo:  ");

        while (letra!='\r')               ///SI ES DISTINTO DE ENTER, GUARDA EN EL ARREGLO LA LETRA Y AUMENTA COLUMNA
        {
            letra=getche();
            if (letra!='\r')
            {
                arreglo1[fila][columnachar]=letra;
                columnachar++;
            }
            if (letra=='\r')            ///SI ES UN ENTER, SI LA COLUMNA ESTA EN 0, PONGO BANDERA EN 1 ASI NO ENCTRA Y TERNINA EL CICLO
            {
                if (columnachar==0)
                {
                    bandera=1;
                }
                if (bandera==0)   /// SI ES UN ENTER Y LA BANDERA ESTA EN 0, LLAMO A LA FUNCION PARA CARGAR LOS NUMEROS, Y PONGO \0
                {                 ///TERMINO LA FILA, PONGO UN \0, AUMENTA LA FILA Y LA COLUMNA LA VUELVO A 0..
                CARGADATOS(arreglo2,fila);
                arreglo1[fila][columnachar]='\0';
                fila++;
                columnachar=0;
                }

            }

        }
        letra='-4';    ///PONGO EN LETRA UN NUMERO PARA QUE ENTRE EN LA PROXIMA FILA.

    }
    IMPRIMIR(arreglo1,arreglo2);




    return 0;
}

void CARGADATOS(int arreglo2[5][8],int fila)
{
    int columna=0,puntos=0,ganados=0,empatados=0,perdidos=0,golesafavor=0,golesrecibidos=0,diferencia=0,partidosjugados=0;

    printf ("Ingrese la cantidad de partidos jugados: ");
    scanf ("%d",&partidosjugados);
    printf ("Ingrese la cantidad de partidos ganados: ");
    scanf ("%d",&ganados);
    printf ("Ingrese la cantidad de partidos empatados: ");
    scanf ("%d",&empatados);
    printf ("Ingrese la cantidad de goles a favor: ");
    scanf ("%d",&golesafavor);
    printf ("Ingrese la cantidad de goles recibidos: ");
    scanf ("%d",&golesrecibidos);

    puntos=ganados*3 + empatados;
    diferencia=golesafavor-golesrecibidos;


    arreglo2[fila][columna]=puntos;
    columna++;
    arreglo2[fila][columna]=partidosjugados;
    columna++;
     arreglo2[fila][columna]=ganados;
    columna++;
     arreglo2[fila][columna]=empatados;
    columna++;
     arreglo2[fila][columna]=perdidos;
    columna++;
     arreglo2[fila][columna]=golesafavor;
    columna++;
     arreglo2[fila][columna]=golesrecibidos;
    columna++;
     arreglo2[fila][columna]=diferencia;








}

void IMPRIMIR(char arreglo1[5][20],int arreglo2[5][8])
{
    int fila=0,columna=0;

   for (fila=0;fila<5;fila++)
   {
       printf ("%s",arreglo1[fila]);    ///IMPRIMO EL NOMBRE DE UN EQUIPO
       for (columna=0;columna<8;columna++)
       {

           printf ("  %d  ",arreglo2[fila][columna]);  /// CON EL FOR DE ADENTRO IMPRIMO TODA LA COLUMNA DE NUMEROS.


       }
       printf ("\n");
   }




}



El problema es que al momento de ejecutarlo tira todos numeros y letras raras. El compilador que uso es el codeblocks que informa si tengo algun error, en este caso lanzo lo siguiente que no logro entender que significa.

Linea 44

Warning: multi-character character constant (-Wmultichar)
Warning: overflow in implicit constant conversion (-Woverflow)

AlbertoBSD

letra='-4';

Letra es un char, no puede tener 2 simbolos, '-'  y '4'.

si quieres manejarlo como numeros entonces debe de ser un entero y se declara asi:

int letra;
letra =4;
//algo mas
letra = -4;


No he visto que hace todo tu codigo pero eso es lo del error que preguntas.

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

palacio29

Cita de: AlbertoBSD en 21 Agosto 2016, 17:38 PM
letra='-4';

Letra es un char, no puede tener 2 simbolos, '-'  y '4'.

si quieres manejarlo como numeros entonces debe de ser un entero y se declara asi:

int letra;
letra =4;
//algo mas
letra = -4;


No he visto que hace todo tu codigo pero eso es lo del error que preguntas.

Saludos

Hola

Muchas gracias, si tenes razon!, que tonto q soy, muchas gracias!