Hola, bueno expongo el ejercicio primero y lo que tengo, que es todo pero tengo errores :S
Aca el problema:
Realizar un prog q permita calcular los importes que se les liquida a los 12 choferes de una empresa de colectivos de acuerdo a la cantidad de kilometros recorridos, y el tipo de vehiculo que conduce, en un dia.
Los datos a ingresar son:
Nombre (20 caracteres validos), patente (6 caracteres validos), KMinicial, KMfinal, y tipo
Los Kilomtros finales se calculan
KMfinal - KMinicial.
Luego a los km finales se calcula segun su tipo una tarifa segun
tipo=1 --->0.70$ x KM
tipo=2 ----> 0.90$ x KM
(Hay q validad tipo)
Se debe informar:
A- Cuantos ganan mas que el promedio y quienes son (Nombre y patente)
b- Cual es el porcentaje del total de la liquidaciones que le corresponde al ingresado en ultimo termino.
Nota: Se deben usar almenos 2 funciones, no usar variables, arrays, ni funciones globales.
Nota 2: Agregado por mi ya que el usuario es bueno, no hay overflow (Osea que el nombre no sobrepasa los 20 carateres, ni la patente).
PD: Lo agrego porq al porf tampoco quiere que lo controlemos. Se que se debe controlar, pero me acoto a lo que me piden.
Resolucion del problema con fallas :S
#include <stdio.h>
int main ()
{
char nomb [12][21], pat [12][7];
int veckm [12][3], vectipo [12] [1];
void ingresar(char nomb[12][21], char pat [12][7], int veckm [12][3], int vectipo [12][1] );
void calcular (char nomb[12][21], char pat[12][7], int veckm [12][3], int vectipo [12][1]);
ingresar (nomb, pat, veckm, vectipo);
calcular (nomb, pat, veckm, vectipo);
getchar ();
return 0;
}
void ingresar (char nomb[12][21],char pat[12][7],int veckm[12][3],int vectipo [12][1])
//declaro variables temporales para el ingreso que luego son enviadas a los vectores
{ int i, tipo1, ki, kf
char nombres[21];
char pate[7];
for (i=0; i<13; i++){
printf ("Ingrese el nombre del chofer:\n");
gets (nombres);
printf ("Ingrese la patente:\n");
gets (pate);
printf ("Ingrese Km Inicial:\n");
scanf ("%i",&ki);
printf ("Ingrese Km Final:\n");
scanf ("%i",&kf);
do{
puts ("Ingrese tipo:\n");
scanf ("%d", &tipo1);
}while (tipo1>1 && tipo1<2)
//Cargo en el vector el tipo
vectipo [i][1]=tipo1;
//cargo en los dos vectores los 12 choferes segun la posicion de i
nomb [i][]=nombres;
pat [i][]=pate;
//cargo en un vector de 15 por 3, para la col 0 ki, para col 1 kf, y en col 2 la dif de ambos
veckm [i][0]=ki;
veckm [i][1]=kf;
veckm [i][2]=ki-kf;
//hasta aca esta echo el ingreso
}
void calcular (char nomb[12][21],char pat[12][7],int veckm[12][3],int vectipo [12][1])
{
int i=0;
float prom, tot;
for (i=0; i<13;i++){
if (vectipo[i][1]==1){
veckm [i][2]=veckm [i][2]*.70;}
else {
veckm [i][2]=veckm [i][2]*.90;
}
tot+=veckm[i][2];
}
prom=tot/12;
for (i=0;i<13;i++){
if (veckm [i][2]>prom)
printf ("%s gana mas que el promedio y tiene la patente:%s\n",nomb[i][], pat[i][]);
}
printf ("El porsentaje que le coresponde al ultimo ingresado %s es:%f\a",nomb[12][],(veckm [12][2]*100)/tot);
}
ERROR
CitarC:\Users\juanca\Desktop\Untitled11.c||In function `ingresar':|
C:\Users\juanca\Desktop\Untitled11.c|21|error: syntax error before "char"|
C:\Users\juanca\Desktop\Untitled11.c|26|error: `nombres' undeclared (first use in this function)|
C:\Users\juanca\Desktop\Untitled11.c|26|error: (Each undeclared identifier is reported only once|
C:\Users\juanca\Desktop\Untitled11.c|26|error: for each function it appears in.)|
C:\Users\juanca\Desktop\Untitled11.c|38|error: syntax error before "vectipo"|
C:\Users\juanca\Desktop\Untitled11.c|40|error: syntax error before ']' token|
C:\Users\juanca\Desktop\Untitled11.c|41|error: syntax error before ']' token|
C:\Users\juanca\Desktop\Untitled11.c||In function `calcular':|
C:\Users\juanca\Desktop\Untitled11.c|68|error: syntax error before ']' token|
C:\Users\juanca\Desktop\Untitled11.c|70|error: syntax error before ']' token|
||=== Build finished: 9 errors, 0 warnings ===|
Desde ya gracias, acepto sugerencias.
Y si es posible si dan alguna resolucion o comentario, que se adecue a mi logica o estructuracion, para poder entenderlo mejor yo.
Si no sigen mi logica o quieren hacerlo por su cuenta, pongan comentarios para poder entenderlo.
Saludos.
A simple vista el primer error es este:
double int veckm[12][2]
2 o mas tipos diferentes en una misma declaración.
- Enteros: short int, int, long int, long long int
- Números en coma flotante: float, double, long double
si ahi mande un poco de fruta porq me habia dado este error
CitarC:\Users\juanca\Desktop\prueba prog.cpp||In function `void calcular(char (*)[21], char (*)[7], int (*)[2], char*)':|
C:\Users\juanca\Desktop\prueba prog.cpp|63|warning: converting to `int' from `double'|
C:\Users\juanca\Desktop\prueba prog.cpp|65|warning: converting to `int' from `double'|
||=== Build finished: 0 errors, 2 warnings ===|
Esto me tira cuando le saco el double.
Gracias por la ayuda!
Vas a calcular números en coma flotante o enteros? lo que te da son advertencias por posibles perdidas de datos. Revisa bien la teoría respecto de los tipos de datos en C.
Saludos
Ahhhh, ahi esta ahora si, el tema era ahi cuadno multiplico por 0.70 o .90 eso me da un float seguro, y el matriz es entera. jeje
Gracias litterhorse