1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Ц++ помош

Дискусија во форумот 'C // C++' започната од Bontino2, 2 Мај 2018.

  1. Bontino2

    Bontino2
    Intern

    170
    16
    21 ноември 2012
    Машко
    Незнам од кај да почнам да ја решавам задачава, па ако можи некој да ми подобјасни како да ја решам, небарам некој да ми ја реши и да ми прати готов код.
    Да се подготви тест со 30 прашања и одговори.Секое точно одговорено прашање да носи по еден бод. При тестирање да се добиваат 10 од 20те можни прашања.
     
  2. DrMTR

    DrMTR
    Guru

    6,218
    6,345
    27 Март 2014
    Најпрвин направи ја шемата как оби требало да изгледа овој алгоритам. Значи почнуваш од прашањата, дали ке користиш while циклус или switch, потоа ке имаш еден for циклус кој што ке ти додава/одзема поени и натака. .размисли околу ова и би требал ода појде работата.
     
  3. dddragan

    dddragan
    Gaining Experience

    195
    200
    12 Август 2014
    Машко
    Јас би идел вака: индексирај ги прашањата и одговорите (низи, dictionaries...), напраи после функција што ќе ти генерира рандом 10 прашања (не е наведено, претпоставувам рандом треба да биде). Понатаму, гледај ги внесените одговори, споредувај и бодувај.
     
  4. Psycore

    Psycore
    Gaining Experience

    477
    408
    12 ноември 2013
    Ќе направиш array со 30 елементи и ќе го напуниш. Доколку е конзолска апликација ќе направиш for loop кој ќе се повторува 10 пати и ќе вади прашање по прашање. Значи излага прашањето и чека инпут. Одкога ќе се одговори можеш да прикажеш дали е точно одговорено / вкупно освоени бодови и да поставиш ново прашање. Зависи како се бара, можеш и сите 10 да ги одговориш па на крај да видиш колку си ги одговорил точно и кои.
     
  5. DrMTR

    DrMTR
    Guru

    6,218
    6,345
    27 Март 2014
    Може и со низи ама посложено е за него.
     
  6. Bontino2

    Bontino2
    Intern

    170
    16
    21 ноември 2012
    Машко
    Како да го направам сега рандом да ми ги дава прашањата и овде има 3 а да ми дади само две прашања за одговарање?
    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;

    int main(int argc, char** argv) {
    string niza[3]={"Glaven grad na Rm\na)Skopje\nb)Bitola","Glaven grad na germanija\na)Berlin\nb)Minhen","Glaven grad na italija\na)Venecija\nb)Rim"};
    char answer;
    int i;
    srand (time(NULL));
    int x;
    x = rand() % 2 + 1;
    for(i=0;i<3;i++)
    {
    cout<<niza[0]<<endl;
    cin>>answer;
    if(answer=='a')
    cout<<"Tocen odgovor"<<endl;
    else
    cout<<"Gresen odgovor"<<endl;

    cout<<niza[1]<<endl;
    cin>>answer;
    if(answer=='a')
    cout<<"Tocen odgovor"<<endl;
    else
    cout<<"Gresen odgovor"<<endl;

    cout<<niza[2]<<endl;
    cin>>answer;
    if(answer=='b')
    cout<<"Tocen odgovor"<<endl;
    else
    cout<<"Gresen odgovor"<<endl;
    }
    return 0;
    }
     
  7. D3N1EL

    D3N1EL
    Practice makes perfect

    2,842
    1,368
    10 Август 2010
    Машко
    Зошто во for loop секое прашање рачно ти е впишан? Направи барем 2 низи, едната со прашања, другата со одговори.

    Сега наместо niza, прекрсти ја во prasanja и додај низа odgovori.
    Во лупот со ранд() генерираш број и тој број го користиш за влечење прашањето од низата.

    Пример:
    Печати prasanja[random];
    Внеси odgovor_tmp;
    Ако odgovor_tmp == odgovori[random] тогаш tocni_odgovori++;

    Е сега голема е веројатноста дека прашањата ќе се повторуваат. Ќе треба да ги чуваш генерираните редни броеви и после секое генерирање на бројот, да правиш проверка и ако треба, повторно ќе генерираш нов број.
     
  8. Bontino2

    Bontino2
    Intern

    170
    16
    21 ноември 2012
    Машко
    Ми остана уште прашањата да ги додадам, но ми вади ерор не можам да го средам

    #include <iostream>
    #include <sstream>
    #include <string>
    #include <cstdio>
    #include <algorithm>

    using namespace std;

    void prasajn(int brojprasajne);
    bool proverkabukvi(char c);
    string convertint(int number);

    struct Student
    {
    string ime;
    int indeks;
    int ocenka;
    float poeni;
    int tocniodgovori;
    int gresniodgovor;
    string listatocni;
    string listagresni;
    Student *pectaipointer;
    };

    void pecati(struct Student* student)
    {
    cout<<"\tIme i prezime: "<<(*student).ime<<endl;
    cout<<"\tBroj na indeks "<<(*student).indeks<<endl;
    cout<<"\tOsvoeni poeni: "<<(*student).poeni<<endl;
    cout<<"\tTocni odgovori: "<<(*student).tocniodgovori<<" - "<<(*student).listatocni<<endl;
    cout<<"\tGresni odgovori: "<<(*student).gresniodgovor<<" - "<<(*student).listagresni<<endl;
    cout<<"--------------------------------------"<<endl;
    }

    int main(int argc, char** argv) {
    char karakter;
    string bukva;
    int brojstudenti=1;
    Student listastudenti[brojstudenti];
    Student *studentpointer;
    studentpointer=listastudenti;

    string listatocniodgovori=" ";
    string listagresniodgovori=" ";
    cout<<endl;
    cout<<"\tTest"<<endl;
    cout<<"--------------------------------------"<<endl;
    for(int j=0;j<brojstudenti;j++)
    {
    struct Student student;
    string ime;
    char imeprezime[256];
    int indeks;
    float poeni=0.0;
    int brojodgovori=0;
    int brojneodgovori=0;
    int ocenka;
    if(j>=1){
    cin.clear();
    cin.ignore();
    }
    cout<<"Vnesete ime i prezime"<<endl;
    cin.getline(imeprezime,256);
    ime=imeprezime;
    for(int t=0;t<ime.size();t++)
    {
    char bukva=ime[t];
    if(isupper(bukva) || bukva==' ');
    else
    if((bukva>=0 && bukva<=31) || (bukva>=33 && bukva<=90) || (bukva>=91 && bukva<=96))
    {
    cout<<"Vaseto ime mora da sodrzi samo bukvi"<<endl;
    }
    }

    cout<<"Vnesetego brojot na indeks"<<endl;
    cin>>indeks;
    if(cin.fail())
    {
    cin.clear();
    cin.ignore();
    cout<<"Vnesuvajte samo breovi"<<endl;
    indeks=0;
    }
    int i;
    for(i=0;i<13;i++)
    {
    if(i<=4)
    {
    prasajne(i);
    cin>>bukva;
    karakter=bukva[0];
    string odgovor;
    string gresenodgovor;
    if(proverkabukvi(karakter))
    {
    if((karakter>=65 && karakter <=66 || karakter>=97 && karakter <=98))
    {
    poeni=poeni+8;
    ++brojodgovori;
    odgovor=converint(i)+karakter;
    listatocni=listatocni+odgovor+" ";
    }
    else
    {
    poeni=poeni+0;
    ++brojneodgovori;
    char tocen=97;
    char tocen1=98;
    gresenodgovor=convertint(i)+karakter+"("+tocen+","+tocen1+")";
    listanetocni=listanetocni+gresen+" ";
    }
    }
    else
    {
    cout<<"Treba da odogovire so a,b,c,d ili e"<<endl;
    poeni=poeni+0;
    }
    }
    else if(i>=5 && i<=8)
    {
    prasajne(i);
    cin>>bukva;
    karakter=buvka[0];
    string odgovor;
    string gresenodgovor;
    if(proverkabukvi(karakter))
    {
    if((karakter>=67 || karakter <=99))
    {
    poeni=poeni+3;
    ++brojodgovori;
    odgovor=converint(i)+karakter;
    listatocni=listatocni+odgovor;
    }
    else
    {
    poeni=poeni+0;
    ++brojneodgovori;
    char tocen=99;
    gresenodgovor=convertint(i)+karakter+"("+tocen+","+tocen1+")";
    listanetocni=listanetocni+gresen+" ";
    }
    }
    else
    {
    cout<<"Treba da odogovire so a,b,c,d ili e"<<endl;
    poeni=poeni+0;
    }

    else if(i>=9 && i<=12)
    {
    prasajne(i);
    cin>>bukva;
    karakter=buvka[0];
    string odgovor;
    string gresenodgovor;
    if(proverkabukvi(karakter))
    {
    if((karakter>=66 || karakter <=98)
    {
    poeni=poeni+1.5;
    ++brojodgovori;
    odgovor=converint(i)+karakter;
    listatocni=listatocni+odgovor;
    }
    else
    {
    poeni=poeni+0;
    ++brojneodgovori;
    char tocen=98;
    gresenodgovor=convertint(i)+karakter+"("+tocen+","+tocen1+")";
    listanetocni=listanetocni+gresen+" ";
    }
    }
    else
    {
    cout<<"Treba da odogovire so a,b,c,d ili e"<<endl;
    poeni=poeni+0;
    }
    }
    }

    }
    }

    }

    if(poeni>=0 && poeni<=24)
    {
    ocenka=5;
    }
    else if(poeni>=25 && poeni<=32)
    {
    ocenka=6;
    }
    else if(poeni>=33 && poeni<=37)
    {
    ocenka=7;
    }
    else if(poeni>=38 && poeni<=40)
    {
    ocenka=8;
    }
    else if(poeni>=41 && poeni<=45)
    {
    ocenka=9;
    }
    else if(poeni>=46 && poeni<=58)
    {
    ocenka=5;
    }

    student.ime=ime;
    student.indeks=indeks;
    student.poeni=poeni;
    student.ocenka=ocenka;
    student.tocniodgovori=brojodgovori;
    student.listatocni=listatocni;
    student.gresniodgovori=brojneodgovori;
    student.listagresni=listanetocni;
    *studentpointer=student;
    *studentpointer++;

    cout<<"----------------------------"<<endl;
    for(int i=0;i<brojstudenti;i++)
    {
    peacti(pecatipointer++);
    }

    return 0;
    }

    bool proverkabukvi(char c)
    {
    if((c>=65 && c<=69) || (c>=97 && c<=101))
    return true;
    else
    return false;
    }

    void prasajne(int brojprasajne)
    {
    cout<<brojprasjne<<"Prasajne broj"<<brojprasajne<<"?"<<endl;
    if(brojprasajne>=1 && brojprasajne <=4)
    {
    cout<<"\ta.Odgovor 1"<<endl;
    cout<<"\tb.Odgovor 2"<<endl;
    cout<<"\tc.Odgovor 3"<<endl;
    cout<<"\td.Odgovor 4"<<endl;
    cout<<"\te.Odgovor 5"<<endl;
    }
    else if(borjprasajne>=5 && brojprasajne<=8)
    {
    cout<<"\ta.Odgovor 1"<<endl;
    cout<<"\tb.Odgovor 2"<<endl;
    cout<<"\tc.Odgovor 3"<<endl;
    cout<<"\td.Odgovor 4"<<endl;
    }
    else if(borjprasajne>=9 && brojprasajne<=12)
    {
    cout<<"\ta.Odgovor 1"<<endl;
    cout<<"\tb.Odgovor 2"<<endl;
    cout<<"\tc.Odgovor 3"<<endl;
    }
    }

    string convertint(int number)
    {
    stringstream ss;
    ss<<number;
    return ss.str();
    }
     
  9. dddragan

    dddragan
    Gaining Experience

    195
    200
    12 Август 2014
    Машко
    Пиши што ерор ти вади.
     
  10. Multipass

    Multipass
    Gaining Experience

    149
    280
    1 ноември 2015
    Машко
    Ваљда пробал да го искомпајлира со GCC на некое IDE кое не го разбира целосно. Башка кодот е тотално погрешно изведен на прво гледање. Почни од почеток.

    Бидејќи не знам кое IDE и кој компајлер го користиш, па да ти кажувам дел по дел како да го сетираш еве ти наједноставна варијанта.

    Симни си Visual Studio Express и инсталирај го. Разгледај го кодов. Научи да "крадеш" односно позајмуваш код од интернет и соодветно да го анализираш и модифицираш за свои потреби.

    Стартувај го Visual Studio Express, потоа New Project > Visual C++ > Win32 Console Application. Кај новиот прозорец што ти се отвори, Next > Console Application. Precompiled Header и Security Lifetimecycle (SDL) деселектирај ги ако се селектирани.

    Направи copy-paste на кодот што ти го дадов како пример погоре, потоа Build > Build Solution или стисни само F7, стартувај го програмот и учи од него, ако го прочита source-от подетално ќе видиш дека ти требаат надворешни .txt фајлови кои ќе ги содржат прашањата и ASCII графиката, направи соодветни такви фајлови внатре во фолдерот каде што е содржан .exe фајлот.

    Многу едноставна е задачата, преку примерот што ти го линкував погоре можеш 90% од работите што ти се потребни да ги изведеш. За бирање на прашањата по случаен редослед се разбира ќе си ја искористиш random функцијата соодветно да бира одреден број од даден pool на прашања.

    Поздрав и со среќа во учењето.
     
    Последна промена: 3 Мај 2018
Слични теми
  1. Busav
    Одговори:
    15
    Прегледи:
    1,913
  2. Goroner
    Одговори:
    9
    Прегледи:
    898
  3. nbdesing
    Одговори:
    3
    Прегледи:
    938
  4. MartinGR1MR
    Одговори:
    1
    Прегледи:
    1,972
  5. comakot
    Одговори:
    14
    Прегледи:
    1,064
Вчитување...

Сподели

Вчитување...