Program za Autoplac pomoc

Program za Autoplac pomoc

offline
  • Pridružio: 16 Okt 2004
  • Poruke: 907
  • Gde živiš: Subotica

Radimo program za skolu, i napisali smo skoro do kraja, i imamo problem da prilikom unosa novog automobila program ulazi u beskonacnu petlju i nikako ne mozemo da smislimo kako da napisemo for petlju i da radi dobro.

Evo koda :

  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<math.h>
  5. int main()
  6. {
  7. char izbor,search,fuel[10];
  8. int u,stanje,euro,kms,year,i;
  9. printf("\n Dobrodosli na Auto plac");
  10. struct parking{
  11. char marka[20];
  12. char model[20];
  13. char gorivo[10];
  14. int km;
  15. int god;
  16. int cena;
  17. };
  18. FILE *plac;
  19. parking auto1[50];
  20. printf("\n Za unos novog automobila unesite U , za pretragu unesite P, a za listanje dostupnih auta L \n" );
  21. scanf("%c",&izbor);
  22. if(izbor=='U')
  23. {
  24. plac=fopen("plac.txt","r");
  25. fscanf(plac,"%d",&stanje);
  26. fclose(plac);
  27. plac=fopen("plac.txt","w+");
  28. for(i=stanje;i<stanje+1;i++)
  29. {
  30. printf("\n Unesite marku auta");
  31. scanf("%s",&auto1[i].marka);
  32. fprintf(plac,"%s",&auto1[i].marka);
  33. printf("\n Unesite model auta");
  34. scanf("%s",&auto1[i].model);
  35. fprintf(plac,"%s",&auto1[i].model);
  36. printf("\n Unesite gorivo koje auto koristi");
  37. scanf("%s",&auto1[i].gorivo);
  38. fprintf(plac,"%s",&auto1[i].gorivo);
  39. printf("\n Unesite kilometrazu");
  40. scanf("%d",&auto1[i].km);
  41. fprintf(plac,"%d",&auto1[i].km);
  42. printf("\n Unesite godiste u formatu xxxx");
  43. scanf("%d",&auto1[i].god);
  44. fprintf(plac,"%d",&auto1[i].god);
  45. printf("\n Unesite cenu auta");
  46. scanf("%d",&auto1[i].cena);
  47. fprintf(plac,"%d",&auto1[i].cena);
  48. stanje ++;
  49. }
  50. fclose(plac);
  51. }
  52. else if(izbor=='P')
  53. {
  54. plac=fopen("plac.txt","r");
  55. printf("\n Za pretragu po gorivu unesite G \n za pretragu po godistu Y \n za pretragu po kilometrazi unesti K \n za pretragu po ceni, unesite C \n");
  56. scanf("%c",&search);
  57. if(search=='G')
  58. {
  59. printf("\n Unesite gorivo koje zelite ( DIZEL/BENZIN/GAS )");
  60. scanf("%s",&fuel[10]);
  61. for(i=0;i<stanje;i++)
  62. {
  63. if(auto1[i].gorivo==fuel)
  64. {
  65. printf("%s",&auto1[i].marka);
  66. printf("%s",&auto1[i].model);
  67. printf("%d",&auto1[i].km);
  68. printf("%d",&auto1[i].god);
  69. printf("%d",&auto1[i].cena);
  70. printf("%s",&auto1[i].gorivo);
  71. }
  72. }
  73. }
  74. }
  75. else if(search=='Y')
  76. {
  77. printf("\n Unesite od kojeg godista trazite auto (xxxx)");
  78. scanf("%d",&year);
  79. for(i=0;i<stanje;i++)
  80. {
  81. if(auto1[i].god>=year)
  82. {
  83. printf("%s",&auto1[i].marka);
  84. printf("%s",&auto1[i].model);
  85. printf("%d",&auto1[i].km);
  86. printf("%s",&auto1[i].gorivo);
  87. printf("%d",&auto1[i].cena);
  88. printf("%d",&auto1[i].god);
  89. }
  90. }
  91. }
  92. else if(search=='K')
  93. {
  94. printf("\n Unesite do koje kilometraze trazite auto");
  95. scanf("%d",&kms);
  96. for(i=0;i<stanje;i++)
  97. {
  98. if(auto1[i].km<=kms)
  99. {
  100. printf("%s",&auto1[i].marka);
  101. printf("%s",&auto1[i].model);
  102. printf("%s",&auto1[i].gorivo);
  103. printf("%d",&auto1[i].god);
  104. printf("%d",&auto1[i].cena);
  105. printf("%d",&auto1[i].km);
  106. }
  107. }
  108. }
  109. else if(search=='C')
  110. {
  111. printf("\n Unesite do koje cene trazite auto");
  112. scanf("%d",&euro);
  113. for(i=0;i<stanje;i++)
  114. {
  115. if(auto1[i].cena<=euro)
  116. {
  117. printf("%s",&auto1[i].marka);
  118. printf("%s",&auto1[i].model);
  119. printf("%d",&auto1[i].km);
  120. printf("%d",&auto1[i].god);
  121. printf("%s",&auto1[i].gorivo);
  122. printf("%d",&auto1[i].cena);
  123. }
  124. }
  125. }
  126. else
  127. {
  128. for(i=0;i<stanje;i++)
  129. {
  130. printf("%s",&auto1[i].marka);
  131. printf("%s",&auto1[i].model);
  132. printf("%d",&auto1[i].km);
  133. printf("%d",&auto1[i].god);
  134. printf("%s",&auto1[i].gorivo);
  135. printf("%d",&auto1[i].cena);
  136. }
  137. }
  138. fclose(plac);
  139. getch();
  140. return 0;
  141. }


Stanje predstavlja broj automobila na placu.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

  1. for(int i=stanje; i<stanje+1; i++) {
  2.    ...
  3.    stanje++;     // ovo ti je greska
  4. }


Zasto u opste to stavljas u for petlji ako vec unosis samo jedno auto, a plus nisi nigdje dodijeli vrijednost promenljivoj stanje ..
napisi bez petlje i na kraju stavis stanje++
Imas gresaka kod fprintf() funkcije, makni '&' znak ispred promenljive.
Koristi swich umjesto if-else if-else



offline
  • Pridružio: 16 Okt 2004
  • Poruke: 907
  • Gde živiš: Subotica

Radi ako stavim bez for petlje, ali kako onda da unesem jos jedan auto, tada mi radi samo za unos jednog auta ? Ispravio sam greske kod fprintf.

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

onda bi mogao da uradis ovako nesto:

  1. do {
  2.    unesi_auto();
  3. } while ( jos_auta() != 0 )


funkcija jos_auta() ti vrace 1 ako zelis da uneses jos jedno auto a 0 ako ne zelis vise, e sad sta ces da pises u njoj da li ces da pitas korisnika da li zelis da uneses jos jedno auto ili ne, to prepustam tebi.

A takodje bi mogao prvo da pitas kolko auta zelite da unesete, pa onda for petlja od I to N ... Very Happy

I jedan mali savjet: Nemoj sve da trpas u main. Napravi posebno funkcije - kod ti je pregledniji i ako ti nesto pravi problem mnogo brze otkrivas i resavas Very Happy

offline
  • Pridružio: 16 Okt 2004
  • Poruke: 907
  • Gde živiš: Subotica

Uradili smo sve sem pretrage, pretraga radi za gorivo, za ostala tri nece da radi, i ne mozemo da nadjemo nikako gresku, cenili bismo da neko pomogne !

  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<math.h>
  5. int main()
  6. {
  7. char izbor,search,fuel[10],z,q,string[15],gorivo[]="GORIVO",godina[]="GODINA",kilometraza[]="KILOMETRAZA",cena[]="CENA";
  8. int u,euro,stanje,nstanje,kms,year,i,j,broj,x,y,c,v,b;
  9. printf("\n Dobrodosli na Auto plac");
  10. struct parking{
  11. char marka[20];
  12. char model[20];
  13. char gorivo[10];
  14. int km;
  15. int god;
  16. int cena;
  17. };
  18. FILE *plac;
  19. parking auto1[50];
  20. plac=fopen("plac.txt","r");
  21. fscanf(plac,"%d",&stanje);
  22. for(i=0;i<stanje;i++)
  23. {
  24. fscanf(plac,"%s",&auto1[i].marka);
  25. fscanf(plac,"%s",&auto1[i].model);
  26. fscanf(plac,"%s",&auto1[i].gorivo);
  27. fscanf(plac,"%d",&auto1[i].km);
  28. fscanf(plac,"%d",&auto1[i].god);
  29. fscanf(plac,"%d",&auto1[i].cena);
  30. }
  31. fclose(plac);
  32. /*OVDE TREBA DO*/
  33. printf("\n Za unos novog automobila unesite U , za pretragu unesite P, a za listanje dostupnih auta L \n" );
  34. scanf("%c",&izbor);
  35. if(izbor=='U')
  36. {
  37. printf("Koliko auta zelite da unesete ? \n");
  38. scanf("%d",&broj);
  39. for(i=stanje;i<stanje+broj;i++)
  40. {
  41. printf("\n Unesite marku auta");
  42. scanf("%s",&auto1[i].marka);
  43. printf("\n Unesite model auta");
  44. scanf("%s",&auto1[i].model);
  45. printf("\n Unesite gorivo koje auto koristi");
  46. scanf("%s",&auto1[i].gorivo);
  47. printf("\n Unesite kilometrazu");
  48. scanf("%d",&auto1[i].km);
  49. printf("\n Unesite godiste u formatu xxxx");
  50. scanf("%d",&auto1[i].god);
  51. printf("\n Unesite cenu auta");
  52. scanf("%d",&auto1[i].cena);
  53. }
  54. nstanje=stanje+broj;
  55. plac=fopen("plac.txt","w");
  56. fprintf(plac,"%d",nstanje);
  57. for(i=0;i<nstanje;i++)
  58. {
  59. fprintf(plac,"\n %s",auto1[i].marka);
  60. fprintf(plac,"\n %s",auto1[i].model);
  61. fprintf(plac,"\n %s",auto1[i].gorivo);
  62. fprintf(plac,"\n %d",auto1[i].km);
  63. fprintf(plac,"\n %d",auto1[i].god);
  64. fprintf(plac,"\n %d",auto1[i].cena);
  65. }
  66. fclose(plac);}
  67. else if(izbor=='P')
  68. {
  69. plac=fopen("plac.txt","r");
  70. fscanf(plac,"%d",&nstanje);
  71. for(i=0;i<nstanje;i++)
  72. {
  73. fscanf(plac,"%s",&auto1[i].marka);
  74. fscanf(plac,"%s",&auto1[i].model);
  75. fscanf(plac,"%s",&auto1[i].gorivo);
  76. fscanf(plac,"%d",&auto1[i].km);
  77. fscanf(plac,"%d",&auto1[i].god);
  78. fscanf(plac,"%d",&auto1[i].cena);
  79. }
  80. printf("\n Za pretragu po gorivu unesite G \n za pretragu po godistu Y \n za pretragu po kilometrazi unesti K \n za pretragu po ceni, unesite C \n");
  81. scanf("%s",&string);
  82. c=strcmp(string,godina);
  83. v=strcmp(string,kilometraza);
  84. b=strcmp(string,cena);
  85. x=strcmp(string,gorivo);
  86. if(x==0)
  87. {
  88. printf("\n Unesite gorivo koje zelite ( DIZEL/BENZIN/GAS )");
  89. scanf("%s",&fuel);
  90.  
  91. for(i=0;i<nstanje;i++)
  92. {
  93. y=strcmp(fuel,auto1[i].gorivo);
  94. if(y==0)
  95. {
  96. printf("%s",auto1[i].marka);
  97. printf("%s",auto1[i].model);
  98. printf("%d",auto1[i].km);
  99. printf("%d",auto1[i].god);
  100. printf("%d",auto1[i].cena);
  101. printf("%s",auto1[i].gorivo);
  102. }
  103. }
  104. }
  105. fclose(plac);
  106. }
  107. else if(c==0)
  108. {
  109. printf("\n Unesite od kojeg godista trazite auto (xxxx)");
  110. scanf("%d",&year);
  111. for(i=0;i<nstanje;i++)
  112. {
  113. if(auto1[i].god>=year)
  114. {
  115. printf("%s",auto1[i].marka);
  116. printf("%s",auto1[i].model);
  117. printf("%d",auto1[i].km);
  118. printf("%s",auto1[i].gorivo);
  119. printf("%d",auto1[i].cena);
  120. printf("%d",auto1[i].god);
  121. }
  122. }
  123. }
  124. else if(v==0)
  125. {
  126. printf("\n Unesite do koje kilometraze trazite auto");
  127. scanf("%d",&kms);
  128. for(i=0;i<nstanje;i++)
  129. {
  130. if(auto1[i].km<=kms)
  131. {
  132. printf("%s",auto1[i].marka);
  133. printf("%s",auto1[i].model);
  134. printf("%s",auto1[i].gorivo);
  135. printf("%d",auto1[i].god);
  136. printf("%d",auto1[i].cena);
  137. printf("%d",auto1[i].km);
  138. }
  139. }
  140. }
  141. else if(b==0)
  142. {
  143. printf("\n Unesite do koje cene trazite auto");
  144. scanf("%d",&euro);
  145. for(i=0;i<nstanje;i++)
  146. {
  147. if(auto1[i].cena<=euro)
  148. {
  149. printf("%s",auto1[i].marka);
  150. printf("%s",auto1[i].model);
  151. printf("%d",auto1[i].km);
  152. printf("%d",auto1[i].god);
  153. printf("%s",auto1[i].gorivo);
  154. printf("%d",auto1[i].cena);
  155. }
  156. }
  157. fclose(plac);}
  158. else if(izbor=='L')
  159. {
  160. plac=fopen("plac.txt","r");
  161. fscanf(plac,"%d",&nstanje);
  162. for(i=0;i<nstanje;i++)
  163. {
  164. fscanf(plac,"%s",&auto1[i].marka);
  165. fscanf(plac,"%s",&auto1[i].model);
  166. fscanf(plac,"%s",&auto1[i].gorivo);
  167. fscanf(plac,"%d",&auto1[i].km);
  168. fscanf(plac,"%d",&auto1[i].god);
  169. fscanf(plac,"%d",&auto1[i].cena);
  170. }
  171. for(i=0;i<nstanje;i++)
  172. {
  173. printf("\n %s",auto1[i].marka);
  174. printf("\n %s",auto1[i].model);
  175. printf("\n %d",auto1[i].km);
  176. printf("\n %d",auto1[i].god);
  177. printf("\n %s",auto1[i].gorivo);
  178. printf("\n %d",auto1[i].cena);
  179. }
  180. fclose(plac);
  181. }
  182. getch();
  183. return 0;
  184. }

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Kolko mogu da vidim ti uporedjujes promenljive

  1. gorivo[]="GORIVO",godina[]="GODINA",kilometraza[]="KILOMETRAZA",cena[]="CENA";


sa karakterom
  1. printf("\n Za pretragu po gorivu unesite G \n za pretragu po godistu Y \n za pretragu po kilometrazi unesti K \n za pretragu po ceni, unesite C \n");
  2. scanf("%s",&string);

Tako da ti funkcija strcmp uporedjuje na primer ovo
strcmp( "G", "GORIVO" );
Ddruga stvar kad unosis string ( %s ) ne koristis operator AND (&)
  1. scanf("%s", str);


treca stvar, sredi malo kod, ja nema trika da mogu da se snadjem xD
Napisi sve pojedinacno. Ako vec pises u C++ iskoristi sve njegove mogucnosti. Koristi strukturu da predstavis jedan auto, a za parking odradi ovo:
  1. std::vector<struct Auto> vParking


i samo trpaj, nema potrebe da vodis racuna o duzini niza. Template klasa vector sve radi sama za tebe.
I mozes da koristsi duplo manje promenljivih i da ti kod bude troduplo manji Very Happy

offline
  • Pridružio: 16 Okt 2004
  • Poruke: 907
  • Gde živiš: Subotica

Skontali smo, uspeli smo da odradimo da sve radi, jos je ostalo da napravimo da se program po zavrsetku jedne od operacija vraca na pocetni meni i gotovi smo, hvala ti na pomoci Very Happy

Te vektore koje spominjes nismo jos radili, i ovo sto smo radili su bas neke osnove, kontam da krenem da ucim neki drugi jezik, ali jbg ovo se radi u skoli Very Happy

Hvala ti jos jednom na pomoci Smile

Ko je trenutno na forumu
 

Ukupno su 1059 korisnika na forumu :: 59 registrovanih, 4 sakrivenih i 996 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 100jan, Air_Force_82, Apok, Avalon015, Belac91, Bozjidar87, Bushek, cenejac111, cifra, cikadeda, coaa, dekiz, doloress, Dorcolac, drimer, E_Kurir, Feller, Georgius, Gitzherai, Insan, IQ116, joca83, Joksss, Josef, koliko, ljuba.b, Macalone, Makeitdrip, Meklejn, mercedesamg, mist-mist, Murko, niksa517, ObicanUser, pein, Prašinar, Prečanin30, saputnik plavetnila, sekretar, Singidunumac, Sir Budimir, spalev, sspp, stagezin, tajvankanasta, Timočka Divizija, Token, Tribal, tritonus, VanZan, varda, VNVK, vobo, voja64, vrlenija, wexy, zdrebac, zombicar153, zvomar