Tengo un pequeño problema, mi codigo trata de registrar autos, sus problemas, etc., pero el problema esta en que no puedo registrar más de un auto y no se porque. Si fueran tan amables de responder y resolver mi problema se los agradecería mucho.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
struct marca{
char nombre[30], modelo[30]; int año;
};
struct auto1{
int placa; marca mc;
}*auts;
int total=0;
void captura(){
FILE *apt;
int n, i; char opc;
// auto1 *auts;
printf("Cuantos autos se van a registrar?\n"); auts=new auto1[n];
for(i=0;i<n;i++){
printf("\n-----Datos del auto %d----\n\n",i
+1);
scanf("%d",&auts
[i
].
placa); printf("Ingrese marca del auto: "); printf("Ingrese modelo del auto: "); printf("Ingrese año del auto: "); scanf("%d",&auts
[i
].
mc.
año
);
printf("\n\nQue problema tiene su auto? \n");
while(opc!='s'){
printf("\na) Afinacion ---> $900\nb) Cambio de aceite ---> $400\nc) Frenos ---> $600\nd) Anillada ---> $3500\ne) Cambio de amortiguadores ---> $800\nf) Bomba de agua ---> $350\ng) Bomba de gasolina ---> $950\nh) Bomba de aceite ---> $1200\ni) Bobinas ---> $1500\nj) Carburada ---> $350\nk)Reten ---> $750\nl) Afinacion a transicion ---> $1800\nm) Cambio de crucetas ---> $700\nn) Soportes ---> $950\no) Flechas ---> $500\np) Rotulas ---> $600\nq) Cadena o banda ---> $1500\nr) Alineacion y balanceo ---> $850\nt) Luz de tablero ---> $350\nu) Clutch ---> $1200\n\ns.Desea salir?\n\n");
switch(opc){
case'a': total+=900; break;
case'b': total+=400; break;
case'c': total+=600; break;
case'd': total+=3500; break;
case'e': total+=800; break;
case'f': total+=350; break;
case'g': total+=950; break;
case'h': total+=1200; break;
case'i': total+=1500; break;
case'j': total+=350; break;
case'k': total+=750; break;
case'l': total+=1800; break;
case'm': total+=700; break;
case'n': total+=950; break;
case'o': total+=500; break;
case'p': total+=600; break;
case'q': total+=1500; break;
case'r': total+=850; break;
case't': total+=350; break;
case'u': total+=1200; break;
case's': break;
default: printf("Opcion invalida"); break; }
printf("\n\n\nTotal que debe: %d\n\n",total
);
}
}
apt
=fopen("Registro de autos.txt","w"); for(i=0;i<n;i++)
fwrite(&auts
[i
],sizeof(auts
[i
]),1,apt
); printf("\n\n**Datos guardados en el archivo**\n\n"); }
//AQUI ES DONDE ESTA EL PROBLEMA!!! LA N NO SE QUE VALOR DEBE DE LLEVAR O COMO SOLUCIONARLO
void mostrar(){
FILE *apt;
int n=3, i;
// auto1 auts[i];
apt
=fopen("Registro de autos.txt","r"); fread(&auts
[0],sizeof(auts
[0]),1,apt
); i=1;
fread(&auts
[i
],sizeof(auts
[i
]),1,apt
); i++;
}
printf("\nPLACA\tMARCA\tMODELO\tANIO\tANTIGUEDAD DE SU AUTO\tTOTAL QUE DEBE\n");
for(i=0;i<n;i++){
printf("\n%d\t%s\t%s\t%d\t %d \t %d\n",auts
[i
].
placa, auts
[i
].
mc.
nombre, auts
[i
].
mc.
modelo, auts
[i
].
mc.
año
, 2015-auts
[i
].
mc.
año
, total
); }
}
/*int prcio(int prec, int pres){
int p, i, n;
if(p==1)
return prec;
else
p=prec-pres;
return p;
}*/
int numautos(){
int n, i, f;
printf("\n\nDame numero de autos registrados: "); for(i=0;i<n;i++){
f=n-i;
return f;
}
}
int main(){
printf("BIENVENIDO AL TALLER MECANICO\n\n"); printf("Minimo de autos que deben entrar por dia: 5\n\n");
int total;
captura();
mostrar();
//printf("\n\nLa cantidad que debe es: $%d\n",prcio(8500,2500));
printf("\n\nLos autos que te faltaron el dia de hoy son: %d\n", 5-numautos
()); return 0;
}
La verdad no entiendo bien que preguntas o que quieres hacer. Si podrías explicarte mejor!
Pare registrar varios carros debes tener una estructura de datos para almacenar los carros y el proceso de añadirlos debe ir dentro de un ciclo.
PD: Ya habías publicado algo de esto en otro post y no lo diste ni por solucionado ni explicaste que hiciste.