» »

c problem pri zaključevanju programa

c problem pri zaključevanju programa

tadej123321 ::

Živjo!
Spisal sem en simpl programček (domača naloga pač :D) in vse dela kot bi moralo, le ko se program zaključi mi javijo windowsi XP napako. Če ima slučajno kdo kakšno idejo kaj bi znalo biti narobe bi mi prišlo zelo prav;)
No, tukaj je pa moj spisani program:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h> 

#define IME 8
#define PRI 12
#define MAX_MIZ 20
#define HODI 4

typedef struct{
     char ime[IME];
     char priimek[PRI];
     int spol; //0...zenska 1...moski :)
     int starost;
     int miza;
     char jedi[HODI][20];
     int koda;
     int nacin_placila;
     int cena;
     } oseba;

void zakljucek(oseba gost){
     int i=0;
     system("CLS");
     printf("Izbrani jedilnik: \n");
     while(i<HODI){
                   printf("\n%d.jed: %s", (i+1), gost.jedi[i]);
                   i++;
                   }
     printf("\n----------------------------------------------------");
     printf("\nKODA NAROCILA: %d", gost.koda);
     
     srand (time(NULL));
     if (gost.nacin_placila==4) gost.cena=rand() % (5) + 10;
     else gost.cena=rand() % (5) + 20;
     printf("\nCENA: %d E\n", gost.cena);
     }


void izpis(oseba gost){
     system("CLS");
     if(gost.spol==0)printf("Pozdravljena, gospa %s %s", gost.ime, gost.priimek);
     else printf("Pozdravljen, gospod %s %s", gost.ime, gost.priimek);
     
     int i=-1;
     while ((i>MAX_MIZ)||(i<0)){
           printf("\nZa katero mizo zelite jesti? [1...%d]", MAX_MIZ);
           scanf("%d", &i);
           }
     gost.miza=i;
     system("CLS");
     char hod[20];
     printf("Prosim povejte kaj boste jedeli:\n");
     i=0;
     while (i<HODI){        
           printf("%d. hod: ",i+1);
           scanf("%s",&gost.jedi[i]);       
           i++;
           }
     srand (time(NULL));
     int koda;
     gost.koda=rand() % 8999 + 1000; // (max - min) + min
     unsigned short int x=5;
     while((x<1)||(x>4)){
                         system("CLS");
                         printf("S cim bi zeleli placati?\n");
                         printf("Moznosti: \n 1. gotovina\n 2. debetna kartica\n 3. kreditna kartica\n 4.studentki bon");
                         printf("\nIzbira: [1...4]: ");
                         scanf("%d",&x);
                                         }
     gost.nacin_placila=x;  
     zakljucek(gost);
     system("PAUSE");
     
     }

void gost(){
     oseba gost;
     char ime2[IME];
     char priimek2[PRI];
     printf("Ime:");
     scanf("%s", ime2);
     printf("Priimek:");
     scanf("%s", priimek2);
     strcpy(gost.ime,ime2);
     strcpy(gost.priimek,priimek2);
     unsigned short int x=2;
     while((x!=0)&&(x!=1)){
                         printf("Spol:    Zenska...0    Moski...1: ");
                         scanf("%d",&x);
                                         }
     gost.spol=x;                                  
     printf("Starost stranke: "); scanf("%d", &gost.starost);  
     izpis(gost);
     }


void meni(){
     unsigned short int i=1;
     while(i!=0){
                 system("CLS");
                 printf("Pozdravljeni!");
                 printf("\nNov gost? [1=da 0=zakljucek dneva]: ");
                 scanf("%d",&i);
                 if(i==1)gost();
                 else break;
                 //moznost dodajanja funkcij meniju
                 }
     printf("Program se zapira...");
     } 
     

int main(){
meni();
system("\nPAUSE");
}

k--p ::

Sem preiskusil, ker ravno delam nekaj v C, in v win 7 v CodoBlocks IDE (mislim da uporablja gcc compiler) stvar deluje normalno.

tadej123321 ::

Hmmmmm(m)^n... potem se mora pa težava skrivati kje drugje kot v moji kodi:)
sory ker sem ti po nepotrebnem jemal čas;)

Tutankhamun ::

unsigned short int x=2;
while((x!=0)&&(x!=1)){
    printf("Spol:    Zenska...0    Moski...1: ");
    scanf("%d",&x);
}

warning: format '%d' expects type 'int *', but argument 2 has type 'short unsigned int '


3 take napake imaš!!!

scanf("%s",&gost.jedi[i]);

warning: format '%s' expects type 'char *', but argument 2 has type 'char (*)[20]'
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

mallard ::

Kar je rekel Tutankhamun. To moraš popravit, ker je tvoj program formalno neveljaven. Lahko se zdi, da dela, lahko se sesuje, lahko napiše kar hoče...

Poleg tega ga ni težko spravit v neskončno zanko. Pa ko sem naročil "1", "2", "3", "4" mi je zaračunal 24 eurov... :)

springfield ::

Sicer že dolgo nisem delal v C-ju, ampak menda mora int main vrnit 0, da se uspešno zaključi program...na kratko...return 0; ti manjka.

BigWhale ::

springfield je izjavil:

Sicer že dolgo nisem delal v C-ju, ampak menda mora int main vrnit 0, da se uspešno zaključi program...na kratko...return 0; ti manjka.


int main() {
  return 0;
}


Je good ANSI practice, neupostevanje slednjega lahko pripelje do problemov, ni pa nujno.

Po domace povedano, tisti, ki ucijo void main(void) so za skloftat. ;>


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] problem z binarnimi datotekami

Oddelek: Programiranje
9951 (816) mallard
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51469 (1364) DavidJ
»

[NALOGA][C] - Sortiranje učencev

Oddelek: Programiranje
71326 (1179) m4r3
»

[C++][Naloga_polja]MIN in MAX polja, izpis za x.100 stevil

Oddelek: Programiranje
222944 (2755) snow
»

[visual c++] #ifdef _DEBUG

Oddelek: Programiranje
51105 (1046) Vesoljc

Več podobnih tem