Pomoc z programem

Pomoc z programem
Michał Piekarski
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:10
0

Witam ,potrzebuje pomocy kogoś to pomoże mi napisać program w postaci quizu matematycznego a raczej tylko pokażę tą głowną funkcjie jak ma działać ,a ja już ją dopracuje
Nie chce 100 czy 200 wierszy pisania ,wystarczy mi kilka linijek które po uruchomieniu programu bedą odczytywać pytanie odpowiedzi i prawidłową odpowiedz .
Nie można uzywać jaichkolwiek tablic.Najlepiej jakby pytania były losowe ale to jest najmniej wazne ,Najbardziej zalezy mi na tym aby odczytywało plik txt i zebym mogł przeczytac pytanie wybra odpowiedz i mogł przejsc do nastepnego pytania .Z tego co slyszałem najlepiej uzyc string i petli ale dopiero zaczynam programowac i ten program nie musi byc najjwyzszych lotów tylko z podstaw.
Dziekuje za pomoc

YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 5 lat
  • Postów:472
0

Czy chcesz nauczyć się pisać, czy chcesz gotowca?

Nie napisałeś nic jak wygląda plik.
Brak tablicy oznacza, np. użycie listy, lub przechowywanie danych POD i liczenie losowych rekordów (chyba że pytania nie muszą być losowe, to wystarczy sama umiejętność odczytania danych z pliku).

Kopiuj
int main() {
    while(true) {
        printQuestion(readQuesionFromFile());
        if(checkAnswer(yourAnswer()){
            cout << "Pass\n";
        }
        else{
            cout << "Fail\n";
        }
    // tutaj jakiś warunek przerwania pętli (koniec zabawy)
    }
}

Nie pisz na priv. Zadaj dobre pytanie na forum.
edytowany 3x, ostatnio: YooSy
D1
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:14
0
Kopiuj
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char* argv[])
{
	string pytanie,odpowiedz,poprawna;//zmienne string do zapisu pytania odpowiedzi i poprawnej odpowiedzi
fstream plik;//zmienna fstream
plik.open("test.txt",ios::in);//tak otwieramy plik podany w cudzysłowie o nazwie test.txt WAŻNE należy utworazyć taki plik w ścieszce dostępu kompilatora
while(plik)//warunek jeżeli plik ma dane to będzie to wykonywał pentlę
{
	getline(plik,pytanie);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
	cout<<pytanie;//czytamy pytanie
	cin>>odpowiedz;//podawanie odpowiedzi
	getline(plik,poprawna);//zapisanie następnych słów w następnej linijce 
	if(poprawna==odpowiedz)//to raczej wiadomo
	{
		cout<<"brawo"<<endl;
	}
	else{
		cout<<":("<<endl;
	}
	
}
plik.close();//Pliki zamykamy bo jak nie to... raczej nic się nie stanie :) ale może
//PS należy utworzyć w ścieżce dostępu kompilatora (tam gdzie zapisują się programy w nim skompilowane) plik o nazwie test.txt i wpisać tam pytania w stylu
//ile to dwa dodać dwa (enter) 4 (enter) ile to 3 dodać 3 (enter) 6 (enter)
}
Michał Piekarski
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:10
0

Plik wygląda tak
numer pytania
Pytanie
odpa
odpb
odpc
odpd
poprawna odpowiedz (a,b,c,d)

Pytanie
odpa
odpb
odpc
odpd
poprawna odpowiedz (a,b,c,d)

I tak 10 pytań.
Dorn dałoby się zrobić tak ze podczas włączeniu programu wyświetlało sie Od razu numer pytania,odpowiedz a,odp b odp c odp d i wtedy wpisuje sie swoją odpowiedz po czym pokazuje brawo albo niestety i pokazuje nastepne pytanie ? To byłoby super :)

Michał Piekarski
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:10
0

Ten pierwszy kod nie działa pytanie
Natomiast ten drugi jest ok ale mogłbym prosic o forme typu pytanie:odp a
odp b
odp c
odp d
twoja odpowiedz to:

                                                                                                       kolejne pytanie

Sam próbuje do tego dojść ale nie wychodzi,nie wiem jak wczytywac kolejne linie tekstu jeden po drugim i po podaniu odpowiedzi wczytywało kolejne pytanie az do ostatniego .
na razie plik txt wygląda tak :
Pyatnie Nr1:
Iloraz to :
Wynik dzielenia
Wynik mnozenia
Wynik pierwiastkowania
Wynik potegowania
a

Pyatnie Nr:2
A^2 to inaczej:
A-A
A+A
A*A
A+A+A
c

YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 5 lat
  • Postów:472
0

Jak już przeanalizujesz przykład @dorn111 zauważysz, że program będzie czytał po kolei pytania z pliku (zawsze w tej samej kolejności).
Jeśli ma to być losowo, to jednak trzeba będzie losować nr pytania i przechodzić na piechotę przez plik, w poszukiwaniu odpowiedniego zestawu (z każdym obiegiem pętli od początku pliku).
Można jak już wspomniałem korzystać z POD i przesuwać wskaźnik plikowy na odpowiednią pozycję (wtedy wygodnie trzymać zestaw pytania w strukturze, co ułatwia pobranie pakietu danych).

dałoby się zrobić tak ze podczas włączeniu programu wyświetlało sie Od razu numer pytania,odpowiedz a,odp b odp c odp d i wtedy wpisuje sie swoją odpowiedz po czym pokazuje brawo albo niestety i pokazuje nastepne pytanie ?

Bo odczyt danych trzeba dopasować do zestawu danych w pliku.

Kopiuj
odczyt pytania
odczyt odp a
odczyt odp b
odczyt odp c
odczyt odp d
odpytanie usera
sprawdzenie odp

edit:

Ten pierwszy kod nie działa

Bo to jest tylko szkielet. Trzeba pomyśleć i uzupełnić.

Polecam http://cpp0x.pl/kursy/ żeby ogarnąć podstawy.


Nie pisz na priv. Zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: YooSy
Michał Piekarski
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:10
0

Ale możesz mi przerobić ten przykład na szybko,potrzebne jest mi to na jutro a ja nie wiem czy sam do tego dojdę.Wiem ze powinienem sam do tego dojść bo wiecej sie naczue ale czas mnie goni ,obiecuję ze nadrobie zaległości tylko prosze o szybką pomoc.

YooSy
Po co ci gotowiec, którego nie rozumiesz?
D1
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:14
0

Jeżeli znasz liczbę pytań to wstaw w while zamiast plik ten warunek co napisałem tam nadole po prawej przy while

Kopiuj
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char* argv[])
{
	int numer=1;
	string pytanie,odpowiedz,poprawna;//zmienne string do zapisu pytania odpowiedzi i poprawnej odpowiedzi
fstream plik;//zmienna fstream
plik.open("test.txt",ios::in);//tak otwieramy plik podany w cudzysłowie o nazwie test.txt WAŻNE należy utworazyć taki plik w ścieszce dostępu kompilatora
while(plik)//warunek jeżeli plik ma dane to będzie to wykonywał pentlę!!!!!!!!Jeśli znasz ilość pytań to w miejsce plik lepiej wpisać (numer<=(liczba pytań)
{
	cout<<numer<<". ";
	for(int i=0;i<5;i++)
	{
	getline(plik,pytanie);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
	cout<<pytanie<<endl;//czytamy pytanie
   } 
	cin>>odpowiedz;//podawanie odpowiedzi
	getline(plik,poprawna);//zapisanie następnych słów w następnej linijce 
	if(poprawna==odpowiedz)//to raczej wiadomo
	{
		cout<<"twoja odpowiedz to"<<odpowiedz<<"brawo dobrze"<<endl;
	}
	else{
		cout<<"twoja odpowiedz to"<<odpowiedz<<"Niestety zle"<<endl;
	}
	numer++;
}
plik.close();//Pliki zamykamy bo jak nie to... raczej nic się nie stanie :) ale może
//PS należy utworzyć w ścieżce dostępu kompilatora (tam gdzie zapisują się programy w nim skompilowane) plik o nazwie test.txt i wpisać tam pytania w stylu
//ile to dwa dodać dwa (enter) 4 (enter) ile to 3 dodać 3 (enter) 6 (enter)
}
YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 5 lat
  • Postów:472
0

Metoda kopiego pejsta:

Kopiuj
while(plik)//warunek jeżeli plik ma dane to będzie to wykonywał pentlę
{
    getline(plik,pytanie);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
    cout<<pytanie;//czytamy pytanie
    getline(plik,odpA);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
    cout<<odpA<<'\n';
    getline(plik,odpB);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
    cout<<odpB<<'\n';
    getline(plik,odpC);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
    cout<<odpC<<'\n';
    getline(plik,odpD);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
    cout<<odpD<<'\n';
    getline(plik,poprawna);//zapisanie następnych słów w następnej linijce 
    if(poprawna==odpowiedz)//to raczej wiadomo
    {
        cout<<"brawo"<<endl;
    }
    else{
        cout<<":("<<endl;
    }

}

@dorn111 ładnie zamknął odczyt linii w pętli, bo zawsze jest ich tyle samo (uprzedził mnie).


Nie pisz na priv. Zadaj dobre pytanie na forum.
Michał Piekarski
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:10
0

Ja sam rozmkniłem i do czegoś takiego doszedłem xD
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char* argv[])
{
string pytanie,odpowiedz,poprawna,odpa,odpb,odpc,odpd,numer;//zmienne string do zapisu pytania odpowiedzi i poprawnej odpowiedzi
fstream plik;//zmienna fstream
plik.open("test.txt",ios::in);//tak otwieramy plik podany w cudzysłowie o nazwie test.txt WAŻNE należy utworazyć taki plik w ścieszce dostępu kompilatora
while(plik)//warunek jeżeli plik ma dane to będzie to wykonywał pentlę
{
getline(plik,numer);
cout<<numer<<endl;
getline(plik,pytanie);
cout<<pytanie<<endl;
getline(plik,odpa);
cout<<odpa<<endl;
getline(plik,odpb);
cout<<odpb<<endl;
getline(plik,odpc);
cout<<odpc<<endl;
getline(plik,odpd);
cout<<odpd<<endl;
cin>>odpowiedz;//podawanie odpowiedzi
getline(plik,poprawna);//;//zapisanie następnych słów w następnej linijce
getline(plik,odpa);
if(poprawna==odpowiedz)//to raczej wiadomo
{
cout<<"brawo"<<endl;
}
else{
cout<<":("<<endl;
}

}
plik.close();//Pliki zamykamy bo jak nie to... raczej nic się nie stanie :) ale może
//PS należy utworzyć w ścieżce dostępu kompilatora (tam gdzie zapisują się programy w nim skompilowane) plik o nazwie test.txt i wpisać tam pytania w stylu
//ile to dwa dodać dwa (enter) 4 (enter) ile to 3 dodać 3 (enter) 6 (enter)
}

WIem wiem amatorsko ale wazne ze działa jakoś xD

YooSy
Formatuj kod, żeby dało się go czytać. http://format.krzaq.cc/
D1
D1
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:14
0

Tu masz losowo dla 10 pytań jak chcesz mniej lub więcej to musisz zmienić w obu rand 60 na inną wartość gdzie każde pytanie to 6 np. 11 pytań to wartość 66 itd;

Kopiuj
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(int argc,char* argv[])
{ int los,nr;
	srand( time( NULL ) );
	string pytanie,odpowiedz,poprawna;//zmienne string do zapisu pytania odpowiedzi i poprawnej odpowiedzi
fstream plik;//zmienna fstream
//tak otwieramy plik podany w cudzysłowie o nazwie test.txt WAŻNE należy utworazyć taki plik w ścieszce dostępu kompilatora
while(1==1)//warunek jeżeli plik ma dane to będzie to wykonywał pentlę!!!!!!!!Jeśli znasz ilość pytań to w miejsce plik lepiej wpisać (numer<=(liczba pytań)
{
plik.open("test.txt",ios::in);
    los=(rand() % 60 ) + 0;
   while(((los)%6)!=0)
    {
    los=(rand() % 60 ) + 0;
	}
	nr=(los/6);
	cout<<"pytanie nr "<<nr<<" "<<endl;
	for(int i=0;i<los;i++)
	{
getline(plik,pytanie);
	}
	for(int i=0;i<5;i++)
	{
	getline(plik,pytanie);// tak odczytujemy całą linie w programie i wpisujemy do zmiennej która jest po przecinku
	cout<<pytanie<<endl;//czytamy pytanie
   } 
	cin>>odpowiedz;//podawanie odpowiedzi
	getline(plik,poprawna);//zapisanie następnych słów w następnej linijce 
	if(poprawna==odpowiedz)//to raczej wiadomo
	{
		cout<<"twoja odpowiedz to"<<odpowiedz<<"brawo dobrze"<<endl;
	}
	else{
		cout<<"twoja odpowiedz to"<<odpowiedz<<"Niestety zle"<<endl;
	}
	nr++;
	plik.close();
}
plik.close();//Pliki zamykamy bo jak nie to... raczej nic się nie stanie :) ale może
//PS należy utworzyć w ścieżce dostępu kompilatora (tam gdzie zapisują się programy w nim skompilowane) plik o nazwie test.txt i wpisać tam pytania w stylu
//ile to dwa dodać dwa (enter) 4 (enter) ile to 3 dodać 3 (enter) 6 (enter)
}
edytowany 2x, ostatnio: dorn111
Michał Piekarski
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:10
0

Problemem losowości jest to ze losuje losowe linijki przez co nie da sie przeczytac pytania ,odpowiedzi.Moze to wina pliku tekstowego
Moj wyglada tak:
Numer Pytania:
Iloraz to :

a-Wynik dzielenia
b-Wynik mnozenia
c-Wynik pierwiastkowania
d-Wynik potegowania

a
Numer Pytania:
A^2 to inaczej:

a-A-A
b-A+A
c-A*A
d-A+A+A

c
itp do 10 pytan

D1
Spróbuj usunąć odstępy (Entery) pomiędzy linijkami żeby wszystko było jedno pod drugim.
D1
Zrób plik typu: Np: Ile to 2+2(enter) 1(enter) 2(enter) 3(enter) 4(enter) D(enter) Ile to 3+3(enter) 1(enter) 2(enter) 3(enter) 6(enter) D(enter)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)