Ayuda programa en C

Iniciado por samudiopabloe, 20 Junio 2014, 23:56 PM

0 Miembros y 2 Visitantes están viendo este tema.

samudiopabloe

Hola que tal, necesitaria ayuda, estoy programando un trabajo practico en C, que debo entregar mañana, y no logro que compilen.

¿Podrían ayudarme a detectar el problema ?

Les agradezco de antemano.

El programa debe calcular EL IMPORTE TOTAL DE UNA FACTURA,
Son 12 clientes ,(nro abonado random(999999)).
12 tarifas (random a cual le toque a cada cliente).

cada TARIFA tiene un precio minimo, y una cantidad de llamadas libres..

El calculo que se debe imprimir es =  Importe min + (llamadasTotal - Llamadas libres ).

AQUI EL CODIGO :

// aclaracion : el importe por llamada exedida es de 5 .

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

//defino f y c para MAT_GENERAL
# define FILAS 2
# define COLUMNAS 12

void CARGAR (float [] [COLUMNAS], float) ;

main(){
clrscr();
//declaro matriztarifas, 1fila:nro de tarifa, 2fila:costo minimo, 3fila: llam libres
float MAT_TARIFAS[3][12] = {{1,2,3,4,5,6,7,8,9,10,11,12},
{10,20,30,40,50,60,70,80,90,100,},
{5,10,10,20,30,50,50,100,200,300,400}
};

float MAT_GENERAL [FILAS] [COLUMNAS];
CARGAR (MATRIZ, FILAS);


}

// el inf carga random(hasta 999999para clientes y random (1000) para llam totales)      
void CARGAR (float MAT[] [COLUMNAS], int N )
{
int i,j;
for (i=0 ; i<n ; i++)
{
if (i==0) // verificar si el if comienza con 0, o 1.!!!!!
{
for (j =0; j<COLUMNAS; j++)
{
MAT[i][j] = random(999999);
}
}
else
{
for (j= 0 ; j < columnas; j++)
{
mat[i][j]=random(1000);
}
}
}
getch();
}





Ya compila, Dejo el codigo de la primera parte, solo falta incluir una funcion que calcule e imprima los resultados, despues lo subo completo.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

//defino f y c para MAT_GENERAL
# define FILAS 3
# define COLUMNAS 12

void CARGAR (float [] [COLUMNAS], int) ;

void main()
{

       //declaro matriztarifas, 1fila:nro de tarifa, 2fila:costo minimo, 3fila: llam libres
float MAT_TARIFAS[3][12] = {{1,2,3,4,5,6,7,8,9,10,11,12},
{10,20,30,40,50,60,70,80,90,100,},
{5,10,10,20,30,50,50,100,200,300,400}
};

       float MAT_GENERAL[FILAS] [COLUMNAS];
       clrscr();
       CARGAR (MAT_GENERAL, FILAS);


}

// el inf carga random(hasta 999999para clientes y random (1000) para llam totales)
void CARGAR (float MAT[] [COLUMNAS], int n )
{
int i,j;
for (i=0 ; i<n ; i++)
{
if (i==0) // verificar si el if comienza con 0, o 1.!!!!!
{
for (j =0; j<COLUMNAS; j++)
{
MAT[i][j] = random(999);
}
}
else
{
for (j= 0 ; j < COLUMNAS; j++)
{
MAT[i][j]=random(1000);
}
}
}

getch();
}

MeCraniDOS

Cita de: samudiopabloe en 20 Junio 2014, 23:56 PM
Ya compila, Dejo el codigo de la primera parte, solo falta incluir una funcion que calcule e imprima los resultados, despues lo subo completo.

Que clase de compilador utilizas?  :rolleyes: :silbar:

Empiezas mal con esto :rolleyes:
Código (cpp) [Seleccionar]
void main

Utilizar conio es.. basura, pásate por aquí

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


La función random está mal, lo primero es inicializar con

Código (cpp) [Seleccionar]
srand (time(NULL));

Y la sintaxis sería, (limite inferior + rand() % limite superior - limite inferior)


Código (cpp) [Seleccionar]
int algo = 1 + rand() % 10 - 1; //Generamos un aleatorio entre 1 y 10

Te falta incluir time.h

Código (cpp) [Seleccionar]
#include <time.h>

La definición de la función CARGAR no tiene mucho sentido, pasas un entero 'n', pero estas pasando FILAS, que lo has definido antes  :o

Cambia en el bucle de la función esto


Código (cpp) [Seleccionar]
for (i=0 ; i<n ; i++)

por esto

Código (cpp) [Seleccionar]
for (i=0 ; i<FILAS ; i++)

Y ya puedes cambiar la definición...


Ya que has posteado tu código funcional, te digo como quedaría con las modificaciones que te he puesto antes:

#include <time.h>
#include <stdio.h>
#include <stdlib.h>


//defino f y c para MAT_GENERAL
# define FILAS 3
# define COLUMNAS 12

void CARGAR (float [] [COLUMNAS]) ;

int main()
{
    //declaro matriztarifas, 1fila:nro de tarifa, 2fila:costo minimo, 3fila: llam libres

    float MAT_TARIFAS[3][12] = {{1,2,3,4,5,6,7,8,9,10,11,12},
                                {10,20,30,40,50,60,70,80,90,100},
                                {5,10,10,20,30,50,50,100,200,300,400}};

    float MAT_GENERAL[FILAS] [COLUMNAS];

    CARGAR (MAT_GENERAL);

    return 0;

}

// el inf carga random(hasta 999999para clientes y random (1000) para llam totales)
void CARGAR (float MAT[] [COLUMNAS])
{
    int i=0,j=0;

    srand (time(NULL));

    for (i=0 ; i<FILAS ; i++)
    {
        if (i==0) // verificar si el if comienza con 0, o 1.!!!!!
        {
            for (j =0;j<COLUMNAS;j++)
            {
                MAT[i][j] = 1 + random() % 998;
            }
        }
        else
        {
            for (j= 0;j < COLUMNAS;j++)
            {
                MAT[i][j]= 1 + random() % 999;
            }
        }
    }
}


Saludos!


"La física es el sistema operativo del Universo"
     -- Steven R Garman

samudiopabloe

Hola a todos muchísimas gracias a todos por sus aportes, nunca les agradecí anteriormente.

Que anden mas que bien !
saludos.

class_OpenGL

MeCraniDos. ¡Te faltan paréntesis!

Aquí
Código (cpp) [Seleccionar]
int algo = 1 + rand() % 10 - 1; //Generamos un aleatorio entre 1 y 10

Tendrías que escribir...
Código (cpp) [Seleccionar]
int algo = 1 + rand() % (10 - 1); //Generamos un aleatorio entre 1 y 10

Porque si no, estarías sumando y restando 1 en la misma "equación" :D

Entonces, la "fórmula" sería:
random_number = min + rand()%(max - min);

Siendo random_number el resultado, min el valor mínimo que puede ser el resultado y max siendo el número más alto que puede alcanzar el número aleatorio

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL