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();
}
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: 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 (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 consrand (time(NULL));
Y la sintaxis sería, (limite inferior + rand() % limite superior - limite inferior)int algo = 1 + rand() % 10 - 1; //Generamos un aleatorio entre 1 y 10
Te falta incluir time.h#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 estofor (i=0 ; i<n ; i++)
por estofor (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!
Hola a todos muchísimas gracias a todos por sus aportes, nunca les agradecí anteriormente.
Que anden mas que bien !
saludos.
MeCraniDos. ¡Te faltan paréntesis!
Aquí
int algo = 1 + rand() % 10 - 1; //Generamos un aleatorio entre 1 y 10
Tendrías que escribir...
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