Ciclos en C

Iniciado por kevin lozano 96, 30 Mayo 2015, 01:02 AM

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

kevin lozano 96

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");
scanf("%d",&n);
auts=new auto1[n];
for(i=0;i<n;i++){

printf("\n-----Datos del auto %d----\n\n",i+1);

printf("Ingrese placa: ");
scanf("%d",&auts[i].placa);
printf("Ingrese marca del auto: ");
fflush(stdin); gets(auts[i].mc.nombre);
printf("Ingrese modelo del auto: ");
fflush(stdin); gets(auts[i].mc.modelo);
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");
scanf("%s",&opc);


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;
}
system("cls");
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");
   fclose(apt);
}


//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;
   while(!feof(apt)){
   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);
   fclose(apt);
   }
}

/*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: ");
   scanf("%d",&n);
   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());
system("PAUSE");
return 0;
}

DarK_FirefoX

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.