Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ Test z tabliczki mnożenia


Rekomendowane odpowiedzi

Opublikowano

Witam, mam pewien problem na jutro potrzebuję mieć zadanie w C++.

Treść niego to:

  • Wykonaj test z tabliczki mnożenia zadający 10 losowych pytań z tabliczki i
  • podliczający ocenę. Użyj tablicy dwu wymiarowej.

Nie jestem w stanie tego wykonać przez nieobecność na lekcjach :<

Tutaj dam gotowy test co robiliśmy na lekcjach niby wystarczy go edytować i coś dodać:

 

 


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
using namespace std;
int main()
{
char odp[10];
odp[ 0 ] = 'A';
odp[ 1 ] = 'B';
odp[ 2 ] = 'C';
odp[ 3 ] = 'B';
odp[ 4 ] = 'C';
odp[ 5 ] = 'A';
odp[ 6 ] = 'A';
odp[ 7 ] = 'B';
odp[ 8 ] = 'C';
odp[ 9 ] = 'B';
int li=0;
char odp_pyt;
do
{
cout<<"Pytanie 1. "<<endl;
cout<<"Upadek cesarstwa Zachodniorzymskiego"<<endl;
cout<<"A.476r"<<endl;
cout<<"B.452r"<<endl;
cout<<"C.488r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 0 ])
li++;
do
{
cout<<li<<"pkt "<<endl;
cout<<"Pytanie 2. "<<endl;
cout<<"Rozlam miedzy Rzymem a Konstanynopolem"<<endl;
cout<<"A.1050r"<<endl;
cout<<"B.1054r"<<endl;
cout<<"C.1154r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 1 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 3. "<<endl;
cout<<"Rozpoczecie chrystianizacji w Polsce"<<endl;
cout<<"A.1966r"<<endl;
cout<<"B.1000r"<<endl;
cout<<"C.966r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 2 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 4. "<<endl;
cout<<"Wolna elekcja"<<endl;
cout<<"A.1573r"<<endl;
cout<<"B.587r"<<endl;
cout<<"C.1782r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 3 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 5. "<<endl;
cout<<"Koronacja syna Chrobrego Mieszka II na krola Polski"<<endl;
cout<<"A.1125r"<<endl;
cout<<"B.1025r"<<endl;
cout<<"C.1589r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 4 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 6. "<<endl;
cout<<"Wyprawa wojskowa na woloszczyzne"<<endl;
cout<<"A.596r"<<endl;
cout<<"B.1761r"<<endl;
cout<<"C.1493r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 5 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 7. "<<endl;
cout<<"Ugoda religijna w sandomierzu"<<endl;
cout<<"A.1570r"<<endl;
cout<<"B.1587r"<<endl;
cout<<"C.1478r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 6 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 8. "<<endl;
cout<<"Bitwa o Oliwe"<<endl;
cout<<"A.2012r"<<endl;
cout<<"B.1627r"<<endl;
cout<<"C.1472r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 7 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 9. "<<endl;
cout<<"II wojna swiatowa"<<endl;
cout<<"A.1399r"<<endl;
cout<<"B.2000r"<<endl;
cout<<"C.1939r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 8 ])
li++;
do
{
cout<<li<<"pkt"<<endl;
cout<<"Pytanie 10. "<<endl;
cout<<"Koronacja Wladyslawa Lokietka"<<endl;
cout<<"A.1233r"<<endl;
cout<<"B.1320r"<<endl;
cout<<"C.1478r"<<endl;
cin>>odp_pyt;
}
while ((toupper(odp_pyt)!='A')&&(toupper(odp_pyt)!='B')&&(toupper(odp_pyt)!='C'));
if(toupper(odp_pyt)==odp[ 9 ])
li++;
cout<<li<<"pkt"<<endl;
//Przeliczenie PKT i ocena do tego
if ((li==1)||(li==2))
cout << "Twoja ocena to: 1(ndst)" << endl;
if ((li==3)||(li==4))
cout << "Twoja ocena to: 2(dop)" << endl;
if ((li==4)||(li==6))
cout << "Twoja ocena to: 3(dst)" << endl;
if ((li==7)||(li==8))
cout << "Twoja ocena to: 4(db)" << endl;
if ((li==8)||(li==10))
cout << "Twoja ocena to: 5(bdb)" << endl;
return 1;
}

 

Ma być zrobiony z użyciem "SRAND"

Jeśli ktoś byłby chętny pomóc i nie sprawia mu to żadnych problemów byłbym bardzo wdzięczny.

Jeśli chociaż ktoś wie mniej więcej jak to zrobić to niech naprowadzi :<

Opublikowano

koniecznie musi być przy użyciu tablicy dwuwymiarowej?

#include <iostream>
#include <windows.h>
#include <cstdlib>
int main()
{
   srand(GetTickCount());
   int wartosci[10][2];
   int wynik = 0;
   for(int i = 0; i<10; ++i)
    wartosci[i][0] = rand()%10+1, wartosci[i][1] = rand()%10+1;
   for(int i = 0; i<10; ++i)
   {
    int w;
    std::cout << wartosci[i][0] << "*" << wartosci[i][1] << "=\n";
    std::cin >> w;
    std::cout << '\n';
    wynik += w == wartosci[i][0] * wartosci[i][1];
   }
   std::cout << "Twoj wynik to: " << wynik << " / 10";
}

lub bez tablicy dwuwymiarowej

#include <iostream>
#include <windows.h>
#include <cstdlib>
int main()
{
   srand(GetTickCount());
   int wynik = 0;
   for(int i = 0; i<10; ++i)
   {
    int w, val1 = rand()%10+1, val2 = rand()%10+1;
    std::cout << val1 << "*" << val2 << "=\n";
    std::cin >> w;
    std::cout << '\n';
    wynik += w == val1 * val2;
   }
   std::cout << "Twoj wynik to: " << wynik << " / 10";
}

Jeśli chodzi ci o coś innego to napisz coś dokładniej

Opublikowano

tak btw. trochę mnie wciagnęło to.

Jakbyś potrzebował to zrobiłem coś takiego w stylu tego co podałeś w pierwszym poście. Wszystko jest losowo. (Jedynie mogą się powtarzać pytania, nie chciało mi się z tym aktualnie bawić, bo nie

(zakładam, że zdarza się to głównie przy dużej ilości pytań, a nikomu chyba nie chciało by się szukać czy takie już było ;])

pieprzy to aż tak gry)

#include <iostream>
#include <windows.h>
#include <cstdlib>
int main()
{
srand(GetTickCount());
int wynik = 0;
int ilosc_podpowiedzi = 4; // ilosc podpowiedzi. Ale nie przesadzja ;d
int max = 10; //maksymalny czynnik
int n = 10; //ilosc pytan. pytania moga sie powtorzyc.
for(int i = 0; i<n; ++i)
{
 int val[ilosc_podpowiedzi*2], pop = rand()%ilosc_podpowiedzi, j = 0;
 char w;
 while(j<ilosc_podpowiedzi*2) // tu wyszlo troche dluzej bo nie chcialem aby sie powtarzaly mozliwe odpowiedzi
 {
	 val[j] = rand()%max+1;
	 val[j+1] = rand()%max+1;
	 bool b = false;
	 for(int k = j - 1; k>0; k-=2)
		 b |= val[j] * val[j+1] == val[k] * val[k-1];
	 if(! j+=2;
 }
 std::cout << i+1 << ". " << val[pop*2] << " * " << val[pop*2+1] << " =\n";
 for(int j = 0; j<ilosc_podpowiedzi; std::cout << static_cast<char>(j+'A') << ". " << val[j*2]*val[j*2+1] << '\n', ++j);
 //możesz sobie zrobic jakies zabezpieczenie, ale to juz od uzytkownika zalezy czy chce podac poprawdne dane
 std::cin >> w;
 std::cout << '\n';
 wynik += w-('a'-'A')*(w>'C') == pop+'A';
}
std::cout << "Twoj wynik to: " << wynik << " / " << n;
}

starałem się to zrobić dość elastycznie. Tzn, możesz ustalić ilość podpowiedzi pod pytaniem, ilość pytań, zakres czynników w działaniu.

Ja z chęcią to zrobiłem, a tobie może się przyda

 

@btw. tak wiem, tablice dynamiczne powinno się deklarować na stercie, ale gcc mi pozwala na robienie tego na stosie...

Opublikowano

@btw. tak wiem, tablice dynamiczne powinno się deklarować na stercie, ale gcc mi pozwala na robienie tego na stosie...

 

Kompilujesz c++ za pomocą gcc? Szacunek.

mjut.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...