ďťż

Ładny brzuch

mam taki oto problem..
zrobilem program z menu - po wyborze czegos cos sie robi..
oto czesc kodu (wiecej nie potrzeba!!):
#include <stdio.h> void wstaw( long int tablica[ 313 ] ) { unsigned long int mask = 1; int x;  printf( "\nPodaj liczbe: " );  scanf( "%d" , &x );  if ( ( x >= 1 ) || ( x <= 10000 ) ) {    mask <<= ( x % 32 );    if( ( tablica[ x / 32 ] & mask ) == mask ) {      printf( "Liczba %d jest juz w tablicy!\n" , x ); }     else {       tablica[ x / 32 ] = ( tablica[ x / 32 ] | mask ); }  }   else {     printf( "Podales zla liczbe!" ); } } . . . unsigned long int tab[ 313 ]; char wybor; int main() {  int i;    for( i = 0; i < 313; i++ ) {      tab[ i ] = 0; }    printf( "\nWybierz tryb pracy\n" );    printf( "w - wstawianie danych do tablicy\n" );    printf( "s - sprawdzanie istnienie liczby w tablicy\n" );    printf( "u - usuwanie liczby z tablicy\n" );    printf( "a - automatyczne odczytanie zawartosci tablicy\n" );    printf( "g - wczytanie libcz z pliku do tablicy (in)\n" );    printf( "z - zapis liczb z tablicy do pliku (out)\n" );    printf( "q - wyjscie z programu\n" );    do {      printf( "\nWybor: " );      scanf( "%c" , &wybor );      switch( wybor ) {        case 'w': wstaw( tab ); break;        case 'a': autodczyt( tab ); break;        case 'u': usun( tab ); break;        case 's': sprawdz( tab ); break;        case 'g': load( tab ); break;        case 'z': save( tab ); break;        case 'q': break;        default: printf( "Wybrales zla opcje!" ); break;      }    }    while( wybor != 'q' ); return 0; }
reszta naprwde nie jest potrzebna, bo wystarczy jedna funkcja zeby sprawdzic co sie dzieje..
co robi program?? wstawia do pustej tablicy bity, dzieki czemu nie musze zapisywac, calych integerow <1-10000> - zaznaczam tylko bit o z inforamcja ze dana liczba istanieje!! z reszta nie wazna jest zasada dzialania programu..
chodzi mi o menu!!
o otoz po wyborze i po dokonaniu wpisu do tablicy, program wraca do wyboru i sam sobie pobiera zmienna ktora wczesniej wpisalem do tablicy, przez co wyskakuje komunikat (patrz kod).. potem znowu wyswietla sie wybor i moge dzialac normalnie..
no i wychodzi ze "wybor" wyswietla sie 2 razy :mellow:
nie wiem jak sie tego pozbyc nie uzywajac funkcji getch!!
czy moze ktos mi pomoc??



printf( "\nWybor: " ); -     scanf( "%c" , &wybor ); +    scanf( "%1s" , &wybor );      switch( wybor ) {
Program nie działał dobrze bo funkcja scanf wczytywała tylko jeden znak pozostawiając śmieci które wczytała dopiero przy drugim uruchomieniu pętli. Alternatywnie możnaby przed każdym break; dopisać getchar(); który zczytywałby te śmieci, albo napisać \
scanf( "%c%c" , &wybor,&tmp);.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •