asia23 Opublikowano 27 Grudnia 2005 Zgłoś Opublikowano 27 Grudnia 2005 Hej Mam pare pytan, ponizej podaje program ktory wlasnie pisze i mam pare pytan: 1. co trzeba zrobic zeby program nie przerywal po wykonaniu ktoregos case? 2. w tym programie (choc wiem ze sa bledy dotyczace wczytywania danych) nei dziala porowananie w funkcji testowanie, nie przyrownuje ich do siebie, choc rozpoznaje ktora jest wieksza, co mam zrobic zeby to dzialalo? Tylko nie mowcie ze musze wszystko od nowa:) I jeszcze jedno, chce zeby to byl czysty c++ Oto moje wypociny #include <iostream.h> #include <conio.h> #include <fstream.h> #include <stdlib.h> #include <stdio.h> void wczytywanie(char b); void testowanie (char ); int il,il2; main() {clrscr(); int i; char b; cout<<"\n************************************************************************** ******\n" "Witamy w programie edukacyjnym TESCIK \n" "Wybierz co chcesz zrobic: \n\n" "1) Wczytywanie pytan testowych (tylko dla nauczycieli!!!)-\t1 \n" "2) Przeprowadzenie testu-t2 \n" "3) Wyniki przeprowadzonych testow\n" "4) Koniec-t4 \n" "\n Wpisz wybrany numer: \n"; cin >>i; switch(i) {case 1: wczytywanie(b); break; case 2 : testowanie(b);break; case 4: exit(1); default:continue; } } void wczytywanie(char ) {int il2,i,j,e; char a[20],b[20],c[20],B[20]; cout<<"Ile pytan chcesz wprowadzic?"; cin>>il; cout<<"Ile bedzie podpowiedzi?"; cin>>il2; ofstream plik; plik.open("test2"); plik<<il<<endl; plik<<il2<<endl; for(i=0;i<il;i=i+1) { cout<<"podaj pytanie: " <<i+1<<endl; cin>>a; plik<<a<<endl; cout<<"podaj "<<il2<< "odpowiedzi:" <<endl; for(j=10;j<il2+10;j=j+1) { cout<<itoa(j,B,16)<<" " ; cin>>b; plik<<b<<endl;} cout<< "Podaj ktora odpowiedz jest prawidlowa:"<<endl; cin>>c; plik<<c<<endl; } plik.close(); } void testowanie (char ) {int licz2,licz,il,i,j,e; char z[20],odp[20],B[20],buf[20],buf2[20],odp2[20]; int p; p=0; cout<<"Witaj !!! Przeczytaj uwaznie pytanie, wybierz odpowiedz\n"; ifstream plik; plik.open("test2"); plik.getline(buf,20); cout<<buf; licz=atoi(buf); plik.getline(buf,20); cout<<buf; licz2=atoi(buf); for(i=0;i<licz;i=i+1) { cout<<"Pytanie: " <<i+1<<endl; plik.getline(buf,20); cout<<buf; for(j=0;j<licz2;j++) {plik.getline(buf,20); cout<<buf; } cout<<"Podaj odpowiedz: "; cin>>odp; plik.get(buf,2); cout<<endl<<buf<<endl<<odp<<endl; if(odp==buf) p=p+1; cout<<"punkty:" <<p<<endl; } plik.close(); } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kobe2005 Opublikowano 27 Grudnia 2005 Zgłoś Opublikowano 27 Grudnia 2005 ad1. Funkcja main np. tak main(){ int i=-1; char b; while(i!=4) //petla bedzie sie powtarzac dopoki nie wybrana zostanie czwórka { clrscr(); cout<< "*************************************" << "Wybierz co chcesz zrobic: \n\n" << "1) Wczytywanie pytan testowych (tylko dla nauczycieli!!!)-\t1 \n" << "2) Przeprowadzenie testu-t2 \n" << "3) Wyniki przeprowadzonych testow\n" << "4) Koniec-t4 \n" << "\n Wpisz wybrany numer: \n" << endl; cin >> i; switch(i) { case 1: wczytywanie(b); break; case 2 : testowanie(b);break; } } //klamra konczonca while} ad2. Nie da rady porównać dwóch tablic tak jak ty to zrobiles. Jesli masz np. x[5] oraz y[5]; to nie mozesz napisac if (x==y). Jesli chcesz porowac dwie tablice to musisz porownac po kolei ich wartosci. Do stringow chyba jest jakas funkcja ale nie pamietam nazwy. Odsylam do jakiegos tutoriala, tam napewno to znajdziesz. ad3. Kod programu umieszczaj w tagach code dzieki czemu jest bardziej przejrzysty. Tak wogole to na przyszlosc napisz ogolna idee co program ma robic. Zawsze wtedy latwiej powiedziec co jest zle lub cos doradzic Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
asia23 Opublikowano 27 Grudnia 2005 Zgłoś Opublikowano 27 Grudnia 2005 Hej Dzieki wielkie Mala uwaga: tak w ogole to jestem dziewczyna:) Uwagi sluszne, zmienilam tylko pobieranie odp na zmienna zamiast wczytywac do tablicy:) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 27 Grudnia 2005 Zgłoś Opublikowano 27 Grudnia 2005 (edytowane) i dlaczego deklaracja funkcji ma postać void wczytywanie(char B); void testowanie (char ); a definicja void wczytywanie(char ) void testowanie (char ) deklaracja nie wymaga podawania nazwy parametrów, a definicja wymaga podania że char b, a by w ciele funkcji można było uznać zmienną b za znaną... i w ogóle po co są te parametry b skoro nic w nich nie przekazujesz :) nie powinno sie uzywać zmiennych globalnych jeśli to nei jest oknieczne.. tu : il il2. Potem jeszcze raz definiujesz w funkcji zmienna il2 przesłaniając globalną... zamiast j=j+1 pisze se po prostu j++ co oznacz a postinkrementację zmiennej (analogia: C++ to jest postinkrementacja C, czyli kolejną edycją...) do sprawdzania stringów jest funkcja strcmp(), w taki sposób jak Ty zrobiłaś (asia23) to porównujesz wskaźniki do tablic, któe zawsze bedą różne, bo dwie tablice mają różny adres w pamięci, chybaże jest to ta sama tablica. Poza tym jesli ma to być c++ to ja bym użył elementów biblioteki STL, chociażby vectora zamiast tablicy stringów i stringa zamiast tablic na znaki. No ale początkujący "muszą" swoje męki przezyć :) Edytowane 27 Grudnia 2005 przez PelzaK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...