C/C++

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Dragon[Sky];1972678 напиша:
PHP:
cout<<"Odgovor 1 \n Odgovor 2 \n Odgovor 3 \n";
Ова можеш вака да го скратиш, за другово не глеам зошто би скратил.

И зошто сите користите endl? Стварно нема потреба да повикуваш endl што повикува flush(); функција за нова линија...\n карактер го прави перфектно добро без да троши толку меморија... нема врска во вакви мали програми ама стил и навики се во прашање.
Ева, абе тоа океј си е... него мене работава ми е за делот "case"... дека ако напишам 20 прашања (според мојот начин како што сум почнал) ќе треба за секое прашање да правам по 3 одговори (3 case)... или 20 прашања x 3 одговори = 60 case... што на крај би испаднале 2000 програмски реда за 20 прашања. :S Не иде некако тоа.
 

диме

When Am I ?
Член од
14 февруари 2007
Мислења
806
Поени од реакции
21
Ева, абе тоа океј си е... него мене работава ми е за делот "case"... дека ако напишам 20 прашања (според мојот начин како што сум почнал) ќе треба за секое прашање да правам по 3 одговори (3 case)... или 20 прашања x 3 одговори = 60 case... што на крај би испаднале 2000 програмски реда за 20 прашања. :S Не иде некако тоа.
Пошто немам многу работено во C++ можи да имам синтаксички грешки :) .
Делот шо ти е со switch го клаваш во еден повторувачки циклус. И има мала измена во кодот.

Код:
int brNaPrasanja = 100;

//TUKA NA NEKOJ NACIN GI VCITUVAS PRASANJATA; NAJDOBAR NACIN MISLAM DEKA E DA GI CITAS OD FAJL
//AMA POSTO NEMAM RABOTENO MNOGU C++ , KE TI GO OSTAVAM OVOJ DEL SAM DA GO NAPISIS :)
//ZNACI TUKA GI CITAS PRASANJATA OD FAJL I GI VNESUVAS VO ARRAY
//ISTO TAKA I ODGOVORITE

int vkupno = 0;

int i;

for(i=0; i<brNaPrasanja; i++){
    
    cout<<  prasanje[i]  <<endl;
    cout<<  odgovorA[i]  <<endl;
    cout<<  odgovorB[i]  <<endl;
    cout<<  odgovorC[i]  <<endl;
    int izbor;
    cin>>izbor;
    
    switch (izbor)
    {
        case 1:
        {
            vkupno += 10 ;
            break;
        }
        case 2:
        {
            vkupno += 15 ;
            break;
        }
        case 3:
        {
            vkupno += 20 ;
            break;
        }
    }
}

cout<<"blabla"<<vkupno<<endl;
 
D

drle

Гостин
Ева, абе тоа океј си е... него мене работава ми е за делот "case"... дека ако напишам 20 прашања (според мојот начин како што сум почнал) ќе треба за секое прашање да правам по 3 одговори (3 case)... или 20 прашања x 3 одговори = 60 case... што на крај би испаднале 2000 програмски реда за 20 прашања. :S Не иде некако тоа.
Правиш функција со првиот код и ја повикуваш колку ти душа сака. И функцијата ти враќа поени кои ке ги собираш, а на влез го зема зборот што се проверува. Пократко од ова и попрактично мислам дека не би можело.
 

диме

When Am I ?
Член од
14 февруари 2007
Мислења
806
Поени од реакции
21
Правиш функција со првиот код и ја повикуваш колку ти душа сака. И функцијата ти враќа поени кои ке ги собираш, а на влез го зема зборот што се проверува. Пократко од ова и попрактично мислам дека не би можело.
Ама пак мораш да имаш некој циклус за повторување. Не е практично еден ред код да го повторуваш n пати, кога можиш да го напишиш во еден повторувачки циклус.

Код:
int i;
int vkupno = 0;

for(i=0; i<brNaPovtoruvanja; i++){
   vkupno += povikNaFukcijata(parametri);
}
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Еве како почнав јас... друго никако неможев да направам, а да не ми даде грешка.
П.С. Уште не сум стасал до посложените функции, али ќе се обидам со примерот на Диме, мислам дека би можел да склопам некако.

Код:
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    //Vnesuvanje na promenlivite
    int a =8, b = 4, c = 4, d = 8, e = 4, f = 4;
    int g = 8, Godini;
    int aa = 4, bb = 6, cc = 8, dd = 6, ee = 8, ff = 6;
    int gg = 6, aaa = 6, bbb = 8, ccc = 6, ddd = 4;
    int eee = 6, fff = 8, ggg = 4;
    int izbor = 0;
    string Ime = "";
    string Prezime = "";
        //Pochetok
        cout<<"************************************************"<<endl;
        cout<<"****************   IQ Test   *******************"<<endl;
        cout<<"************************************************"<<endl;
        cout<<"-"<<endl;
        cout<<"Dobredojdovte vo Virtuelniot IQ Test na SkyDriver!"<<endl;
        cout<<"-"<<endl;
        cout<<"Najprvin vnesete go vasheto ime."<<endl;
        cout<<"-"<<endl;
        cin>>Ime;
        cout<<"-"<<endl;
        cout<<"Vnesete go i vasheto prezime."<<endl;
        cout<<"-"<<endl;
        cin>>Prezime;
        cout<<"-"<<endl;
        cout<<"Sega vnesete gi vashite godini."<<endl;
        cout<<"-"<<endl;
        cin>>Godini;
        system("cls");
        cout<<"-"<<endl;
        while(izbor!=2){
        cout<<"Nachinot na reshavanje na testot e poznat..."<<endl;
        cout<<"Odgovarajte na postavenite prashanja..."<<endl;
        cout<<"Na toj nachin shto go izbirate brojot pred odgovorot."<<endl;
        cout<<"Mozhe da zapochneme so prashanjata."<<endl;
        cout<<"Prashanja broj 1:"<<endl;
        cout<<"Kolku e 13 na kuben ?"<<endl;
        cout<<"1. 2197"<<endl;
        cout<<"2. 2721"<<endl;
        cout<<"3. 2318"<<endl;
        cout<<"*"<<endl;
        int eden;
        cin>>eden;
        switch(eden)  
           {
                case 1:
                     {
                          eden = a;
                          a = 8;
                          system("cls");
                     break;
                     }
                case 2:
                     {
                          eden = aa;
                          aa = 4;
                          system("cls");
                     break;
                     }
                case 3:
                     {
                           eden = aaa;
                           aaa = 6;
                           system("cls");
                     break;
                     }       
    system("PAUSE");
    return 0;
             }
             cout<<"Prashanja broj 2:"<<endl;
             cout<<"Ako vo eden dvor ima drvo krusha so 32 krushi..."<<endl;
             cout<<"i ako padnat od krushata 8 krushi..."<<endl;
             cout<<"Kolku krushi kje ostanat vo dvorot ?"<<endl;
             cout<<"1. Kje ostanat 26 krushi."<<endl;
             cout<<"2. Kje ostanat 40 kruzhi."<<endl;
             cout<<"3. Kje ostanat 32 krushi."<<endl;
             int dva;
             cin>>dva;
             switch(dva)  
                 {
                 case 1:
                             {
                                 dva = b;
                                 b = 4;
                                 system("cls");
                        break;
                        }
                 case 2:
                             {
                                 dva = bb;
                                 bb = 6;
                                 system("cls");
                        break;
                        }
                 case 3:
                             {
                                 dva = bbb;
                                 bbb = 8;
                                 system("cls");
                        break;
                        }
             system("pause");
             return 0;
             }
             cout<<"Prashanja broj 3:"<<endl;
             cout<<"Na edna zhica sletale 5 lastovici,"<<endl;
             cout<<"potoa odletale 18 lastovici..."<<endl;
             cout<<"a pred toa na zhicata imalo 64 lastovici"<<endl;
             cout<<"Kolku lastovici ostanale na zhicata ?"<<endl;
             cout<<"1. Ostanale 48 lastovici."<<endl;
             cout<<"2. Ostanale 51 lastovici."<<endl;
             cout<<"3. Ostanale 69 lastovoci."<<endl;
             cout<<"*"<<endl;
             int tri;
             cin>>tri;
             switch(tri)  
                 {
                 case 1:
                             {
                                 tri = c;
                                 c = 4;
                                 system("cls");
                        break;
                        }
                 case 2:
                             {
                                 tri = cc;
                                 cc = 8;
                                 system("cls");
                        break;
                        }
                 case 3:
                             {
                                 tri = ccc;
                                 ccc = 6;
                                 system("cls");
                        break;
                        }
             system("pause");
             return 0;
             }
             cout<<"Prashanja broj 4:"<<endl;
             cout<<"Na izlog od edna prodavnica ima:"<<endl;
             cout<<"- 27 Maici."<<endl;
             cout<<"- 32 Bluzoni."<<endl;
             cout<<"- 64 Para farmerki."<<endl;
             cout<<"*"<<endl;
             cout<<"Najprvin gi delime samite so sebe i potoa gi sobirame"<<endl;
             cout<<"Koj broj kje go dobiete ?"<<endl;
             cout<<"*"<<endl;
             cout<<"1. Go dobiv brojot 3."<<endl;
             cout<<"2. Go dobiv brojot 13."<<endl;
             cout<<"3. Go dobiv brojot 23."<<endl;
             cout<<"*"<<endl;
             int chetiri;
             cin>>chetiri;
             switch (chetiri)
                 {
                             case 1:
                                  {
                                       chetiri = d;
                                       d = 8;
                                       system("cls");
                                  break;
                                  }
                             case 2:
                                  {
                                        chetiri = dd;
                                        dd = 6;
                                        system("cls");
                                  break;
                                  }
                             case 3:
                                  {
                                        chetiri = ddd;
                                        ddd = 4;
                                        system("cls");
                                  break;
                                  }
                 system("pause");
                 return 0;
                 }
             cout<<"Prashanje broj 5."<<endl;
             cout<<"Patekata e dolga 123m, shiroka 8 metri, a finishot e na 100m"<<endl;
             cout<<"Kolku metri treba da istrcha atleticharot,"<<endl;
             cout<<"za da mu go izmerat vremeto za koe ja istrchal patekata ?"<<endl;
             cout<<"1. 23 Metri."<<endl;
             cout<<"2. 100 Metri."<<endl;
             cout<<"3. 123 Metri."<<endl;
             cout<<"*"<<endl;
             int pet;
             cin>>pet;
             switch (pet)
                {
                    case 1:
                         {
                             pet = e;
                             e = 4;
                             system("cls");
                         break;
                         }
                    case 2:
                         {
                              pet = ee;
                              ee = 8;
                              system("cls");
                          break;
                          }
                    case 3:
                          {
                               pet = eee;
                               eee = 6;
                               system("cls");
                          break;
                          }
            
             system("pause");
             return 0;
             }
             cout<<"Prashanje broj 6."<<endl;
             cout<<"Ako se urne avion na Makedonsko-Bugarskata granica(na linija)"<<endl;
             cout<<"kaj kje gi zakopaat prezhiveanite ?"<<endl;
             cout<<"1. Makedonija."<<endl;
             cout<<"2. Bugarija."<<endl;
             cout<<"3. Ni edno, ni drugo."<<endl;
             cout<<"*"<<endl;
             int shest;
             cin>>shest;
             switch (shest)
                 {
                           case 1:
                                {
                                      shest = f;
                                      f = 4;
                                      system("cls");
                                break;
                                }
                           case 2:
                                {
                                      shest = ff;
                                      ff = 6;
                                      system("cls");
                                break;
                                }
                           case 3:
                                {
                                      shest = fff;
                                      fff = 8;
                                      system("cls");
                                break;
                                }
                 system("pause");
                 return 0;
                 }
                 cout<<"Prashanje broj 7."<<endl;
                 cout<<"-"<<endl;
                 cout<<"Kolku pola ima magnetot ?"<<endl;
                 cout<<"*"<<endl;
                 cout<<"1. 2 pola."<<endl;
                 cout<<"2. 3 pola."<<endl;
                 cout<<"3. 4 pola."<<endl;
                 cout<<"*"<<endl;
                 int sedum;
                 cin>>sedum;
                 switch (sedum)
                    {
                        case 1:
                             {
                                 sedum = g;
                                 g = 8;
                                 system("cls");
                             break;
                             }
                        case 2:
                             {
                                   sedum = gg;
                                   gg = 6;
                                   system("cls");
                             break;
                             }
                        case 3:
                             {
                                   sedum = ggg;
                                   ggg = 4;
                                   system("cls");
                             break;
                             }
                    system("pause");
                    return 0;
                    }           
                    cout<<"Prashanje broj 8."<<endl;
                    cout<<"-"<<endl;
                    cout<<"Ako vo eden upaljach sobira 50ml plin,"<<endl;
                    cout<<"a edna boca e 16 pati pogolema od upaljachot."<<endl;
                    cout<<"Kolku litri plin mozhe da sobere vo bocata ?"<<endl;
                    cout<<"*"<<endl;
                    cout<<"1. Sobira 800 litri."<<endl;
                    cout<<"2. Sobira 0,8 litri."<<endl;
                    cout<<"3. Sobira 80 mililitri."<<endl;      
            
             cout<<"Spored odgovorenite prashanja..."<<endl;
             cout<<"------------------------------------------------"<<endl;
             cout<<"Ime....... "<<Ime<<'.'<<endl;
             cout<<"-"<<endl;
             cout<<"Prezime... "<<Prezime<<'.'<<endl;
             cout<<"-"<<endl;
             cout<<"Godini.... "<<Godini<<'.'<<endl;
             cout<<"-------------------------------------------------"<<endl;
             int koef;
             koef = eden + dva + tri + chetiri + pet + shest + sedum - Godini;
             cout<<"Tvojot koeficient na inteligencija iznesuva: "<<koef<<endl;
             cout<<"-------------------------------------------------"<<endl;
             system("pause");
             system("cls");
             cout<<"-"<<endl;
             cout<<"-Vnesete 1 ili 2-"<<endl;
             cout<<"-"<<endl;
             cout<<"1. Sakam povtorno da si go proveram koeficientot."<<endl;
             cout<<"2. Dosta beshe za denes."<<endl;
             cin>>izbor;
             system("cls");
             }
    return 0;
}
 

back_rest

ex mod coder
Член од
19 јули 2006
Мислења
1.590
Поени од реакции
107
:eek:ftopic:
Уште еден ако напише код во пхп тагови ќе го плескам шамари. :nenene:
 

Dzish

unlike any other...
Член од
15 февруари 2007
Мислења
13.994
Поени од реакции
2.689
А зошто наместо 10 прашања и 10 пати копирање на код, не ги ставиш прашањата и одговорите во матрица со 10 елементи, па со еден for циклус ке ги вртиш прашањата и со друг одговорите... Скратуваш еден тон код. Што ако сакам тест со 100 прашања? Ке искуцаш 5.000 реда код?

Нешто како во матрицата prasanje[0,1] е запишано прашањето, а во матрицата odgovor [1,0] е првиот одговор, odgovor [1,1] е вториот одговор odgovor [1,2] е третиот и т.н.

би пристапувал некако вака

for (i=0; i<10; i++)
{
овде го печатиш тоа со прашањето (i<10 бидејки имаш 10 прашања)
cout<<prasanje[0, i];
и чекаш одговор.

for(j=0; j<3; j++)
{
е тука ке ги обработиш одговорите тој километарскиот код, се крати и се споредува со некој од дадените одговори. До одговорите ке пристапуваш со odgovor [i,j] a со фор циклусот ке ги извртиш сите одговори, само треба да најдеш кој одговор го внесил корисникот (да одредиш колку поени освоил) и да го запишеш во збирот на поени.


}


}
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Dzish напиша:
Ке искуцаш 5.000 реда код?
SkyDriver напиша:
...што на крај би испаднале 2000 програмски реда за 20 прашања. :S Не иде некако тоа.
Тоа и сакав да кажам, начин каде што би можел да го направам истото со што помалце код. Пробав неколку комбинации (со што помалце код)... или ќе јавеше грешка или програмот немаше да работи како што сакам. Мене проблемот ми беше тоа што секој одговор носи различен број поени, а на крај треба да се пресметаат поените само од внесените одговори (доколку беше работава за квиз "точно/неточно", тогаш немаше да имам никаков проблем, ама ова... :/ ).
Ова што го објаснивте и ти и Диме ќе седнам или поручек или вечер и ќе видам како би испаднало така, али ми изгледа дека ќе ја биде работата.

П.С. Ви благодарам на објаснувањата :smir:.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Еве го сега малце поинаку IQ тестот каде што кодот е скратен за 5 пати :) Околу ова малце ми помогна еден другар и сега за 11 прашања ми фати некаде околу 85 реда (а во претходниот код за 7 прашања имаше некаде 380-400 реда) :) Сега уште да додадам неколку прашања и таман ќе биде.

П.С. Не обрнивајте многу внимание на прашањата.

Код:
#include <cstdlib>
#include <iostream>
#include <String.h>
#include <Stdlib.h>
#include <Stdio.h>
#include <Time.h>
#include <string>
using namespace std;
int main()
{
    char pecati_1[]= "************************************************\n****************   IQ Test   *******************\n************************************************\n-\nDobredojdovte vo Virtuelniot IQ Test na SkyDriver!\n-\nNajprvin vnesete go vasheto ime.\n-\n";   
    char pecati_2[]= "-\nVnesete go i vasheto prezime.\n-\n";
    char pecati_3[]= "-\nSega vnesete gi vashite godini.\n-\n";
    char pravila[]= {"Nachinot na reshavanje na testot e poznat...\nOdgovarajte na postavenite prashanja...\nNa toj nachin shto go izbirate brojot pred odgovorot.\nMozhe da zapochneme so prashanjata.\n"};
    char prasanja[11][255]={"Prashanja broj 1:\nKolku e 13 na kuben ?\n",
    "Prashanja broj 2:\nAko vo eden dvor ima drvo krusha so 32 krushi...\ni ako padnat od krushata 8 krushi...\nKolku krushi kje ostanat vo dvorot ?\n",
    "Prashanja broj 3:\nNa edna zhica sletale 5 lastovici,\npotoa odletale 18 lastovici...\na pred toa na zhicata imalo 64 lastovici\nKolku lastovici ostanale na zhicata ?\n",
    "Prashanja broj 4:\nNa izlog od edna prodavnica ima:\n- 27 Maici.\n- 32 Bluzoni.\n- 64 Para farmerki.\n*\nNajprvin gi delime samite so sebe i potoa gi sobirame\nKoj broj kje go dobiete ?\n*\n",
    "Prashanje broj 5.\nPatekata e dolga 123m, shiroka 8 metri, a finishot e na 100m\nKolku metri treba da istrcha atleticharot,\nza da mu go izmerat vremeto za koe ja istrchal patekata ?\n",
    "Prashanje broj 6.\nAko se urne avion na Makedonsko-Bugarskata granica(na linija)\nkaj kje gi zakopaat prezhiveanite ?\n",
    "Prashanje broj 7.\n-\nKolku pola ima magnetot ?\n*\n",
    "Prashanje broj 8.\n-\nAko vo eden upaljach sobira 50ml plin,\na edna boca e 16 pati pogolema od upaljachot.\nKolku litri plin mozhe da sobere vo bocata ?\n*\n",
    "Prashanje broj 9.\n-\nAko imash 8 ribi vo akvariumot i ako ti umrat 3...\nKolku ribi kje ti ostanat vo akvariumot ?\n",
    "Prashanje broj 10.\nVo edno mnozhestvo ima 3 kruga, 4 kvadrati i 2 triagolnici.\nKolku vidovi na elementi ima vo mnozhestvoto ?\n",
    "Prashanje broj 11.\nImame 12 moneti od 5 denari, 3 moneti od 2 denari i 11 moneti od 1 denar.\nKolku vkupno denari imame ?\n"};
    char odgovori[11][255]={"1. 2197\n2. 2721\n3. 2318\n*\n",
    "1. Kje ostanat 26 krushi.\n2. Kje ostanat 40 kruzhi.\n3. Kje ostanat 32 krushi.\n",
    "1. Ostanale 48 lastovici.\n2. Ostanale 51 lastovici.\n3. Ostanale 69 lastovoci.\n",
    "1. Go dobiv brojot 3.\n2. Go dobiv brojot 13.\n3. Go dobiv brojot 23.\n",
    "1. 23 Metri.\n2. 100 Metri.\n3. 123 Metri.\n*\n",
    "1. Makedonija.\n2. Bugarija.\n3. Ni edno, ni drugo.\n*\n",
    "1. 2 pola.\n2. 3 pola.\n3. 4 pola.\n",
    "1. Sobira 800 litri.\n2. Sobira 0,8 litri.\n3. Sobira 80 mililitri.\n",
    "1. Kje ostanat 5 ribi.\n2. Kje ostanat 3 ribi.\n3. Kje ostanat 8 ribi.\n",
    "1. Ima 5 vidovi.\n2. Ima 3 vidovi.\n3. Ima 9 vidovi.\n",
    "1. Imame 26 denari.\n2. Imame 8 denari.\n3. Imame 77 denari.\n"};
    char za_kraj_1[]="Spored odgovorenite prashanja...\n------------------------------------------------\nIme....... ";
    char za_kraj_2[]="\n-\nPrezime... ";
    char za_kraj_3[]="-\nGodini.... ";       
    char dali[]="-Vnesete 1 ili 2-\n-\n1. Sakam povtorno da si go proveram koeficientot.\n2. Dosta beshe za denes.\n";
    char Buffer[255];
    char Buffer2[255];
    int Answer;
    int Godini;
    int izbor = 0;
    string Ime = "";
    string Prezime = "";
        cout<<pecati_1;
        cin>>Ime;
        cout<<pecati_2;
        cin>>Prezime;
        cout<<pecati_3;
        cin>>Godini;
        system("cls");
        cout<<"-"<<endl;
        while(izbor!=2){
        int rezultat=0;
        cout<<pravila;
        for(int j=0;j<11;j++)
        {        
                sprintf(Buffer, "%s", prasanja[j]);
                sprintf(Buffer2, "%s", odgovori[j]);
                puts(Buffer);
                puts(Buffer2);
                cin>>Answer;
                system("cls");       
        if((j==0 && Answer==1)||(j==3 && Answer==1)||(j==6 && Answer==1)||(j==1 && Answer==3)||(j==4 && Answer==3)||(j==2 && Answer==2)||(j==5 && Answer==3)||(j==7 &&  Answer==2)||(j==8 && Answer==3)||(j==9 && Answer==2)||(j==10 && Answer==3))
        rezultat+=8;
        if((j==1 && Answer==1)||(j==2 && Answer==1)||(j==4 && Answer==1)||(j==5 && Answer==1)||(j==0 && Answer==2)||(j==3 && Answer==3)||(j==6 && Answer==3)||(j==7 &&  Answer==1)||(j==8 && Answer==1)||(j==9 && Answer==1)||(j==10 && Answer==1))
        rezultat+=4;
        if((j==0 && Answer==3)||(j==1 && Answer==2)||(j==2 && Answer==3)||(j==3 && Answer==2)||(j==4 && Answer==2)||(j==5 && Answer==2)||(j==6 && Answer==2)||(j==7 &&  Answer==3)||(j==8 && Answer==2)||(j==9 && Answer==3)||(j==10 && Answer==2))
        rezultat+=6; 
        }                      
             cout<<za_kraj_1<<Ime<<'.'<<za_kraj_2<<Prezime<<".\n"<<za_kraj_3<<Godini<<".\n-------------------------------------------------"<<endl;
             rezultat -=Godini;
             cout<<"Tvojot koeficient na inteligencija iznesuva: "<<rezultat<<"\n-------------------------------------------------"<<endl;
             system("pause");
             system("cls");
             cout<<"-"<<endl;
             cout<<dali;
             cin>>izbor;
             system("cls");
             }
    return 0;
}
 
Член од
26 ноември 2007
Мислења
55
Поени од реакции
3
Има ли некој доброволец доброволно да напише некоја кратка лекција малку подобро за матриците заедно со некој пример како се изменуваат, пресликуваат и слично.
 
Член од
28 јануари 2007
Мислења
9.850
Поени од реакции
1.559
Дали некој има појма од ова чудото
hash table that handles collisions with quadratic probing

оти имам една задача нешто е заебана да знам дали да ја пишам овде :)
 
Член од
14 јануари 2008
Мислења
1.341
Поени од реакции
162
Има ли некој доброволец доброволно да напише некоја кратка лекција малку подобро за матриците заедно со некој пример како се изменуваат, пресликуваат и слично.
Matrica ne e nisto posebno tuku dvodimenzionalno pole. Deklaracijata e identicna kako i za ednodimenzionalno pole samo sto se dodava uste edna dimenzija, normalno (primer int A[n][m] e matrica so celobrojni clenovi, smesteni vo n redovi i m koloni). Indeksiranje na clenovite pocnuva od nula, kako za redovi taka i za koloni ( A[3][2] e vrednosta na clenot koj se naodja vo cetvrti red, treta kolona). Pri deklariranje na matrica, dimenziite mora da se celobrojni vrednosti. Deklaracija od tipot int A[3.2][4.1] e nevalidna. Isto taka deklaracijata float A[n][m] e nevalidna dokolku n i m nemaat veke dodeleni vrednosti, t.e. ne se inicijalizirani.

Osnoven nacin za setanje niz matrica:

for(i=0;i<n;i++)
for(j=0;j<m;j++)

kade sto so "i" se menuvaat redovi, a so "j" koloni vo ovoj slucaj. So ovie dve instrukcii se pominuva niz site elementi od matricata, pocnuvajki od prviot pa do posledniot.

Primer:

int main()
{
int n,m,i,j;

cin >> n >> m; //vnesuvame vrednosti za n i m.

int A[n][m], B[n][m]; //deklarirame 2 matrici so dimenzii n x m.

for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin >> A[j]; //gi vnesuvame elementite od matricata.

for(i=0;i<n;i++)
for(j=0;j<m;j++)
B[j] = A[j]; //preslikuvanje na elementi od matrica A vo matrica B.

for(i=0;i<n;i++)
for(j=0;j<m;j++)
cout << A[j]; // pecatenje na matrica A;

}
 
Член од
28 јануари 2007
Мислења
9.850
Поени од реакции
1.559
Е па вака ај да го ставам кодот :)

QuadraticProbing.h

Код:
        #ifndef QUADRATIC_PROBING_H_
        #define QUADRATIC_PROBING_H_

        #include <vector>
        #include <string>

    using namespace std;

        // QuadraticProbing Hash table class
        //
        // CONSTRUCTION: an initialization for ITEM_NOT_FOUND
        //               and an approximate initial size or default of 101
        //
        // ******************PUBLIC OPERATIONS*********************
        // void insert( x )       --> Insert x
        // void remove( x )       --> Remove x
        // Hashable find( x )     --> Return item that matches x
        // void makeEmpty( )      --> Remove all items

        template <class HashedObj>
        class HashTable
        {
          public:
            explicit HashTable( const HashedObj & notFound, int size = 101 );
            HashTable( const HashTable & rhs )
              : ITEM_NOT_FOUND( rhs.ITEM_NOT_FOUND ),
                array( rhs.array ), currentSize( rhs.currentSize ) { }

            const HashedObj & find( const HashedObj & x ) const;

            void makeEmpty( );
            void insert( const HashedObj & x );
            void remove( const HashedObj & x );

            const HashTable & operator=( const HashTable & rhs );

            enum EntryType { ACTIVE, EMPTY, DELETED };
          private:
            struct HashEntry
            {
                HashedObj element;
                EntryType info;

                HashEntry( const HashedObj & e = HashedObj( ), EntryType i = EMPTY )
                  : element( e ), info( i ) { }
            };
            
            vector<HashEntry> array;
            int currentSize;
            const HashedObj ITEM_NOT_FOUND;

            bool isActive( int currentPos ) const;
            int findPos( const HashedObj & x ) const;
            void rehash( );
        };

        int hash( const string & key, int tableSize );
        int hash( int key, int tableSize );

        #include "QuadraticProbing.cpp"
        #endif

Ова е QuadraticProbing.cpp

Код:
        #include "QuadraticProbing.h"
        #include <iostream>

        using namespace std;


        /**
         * Internal method to test if a positive number is prime.
         * Not an efficient algorithm.
         */
        bool isPrime(int n)
        {
            if( n == 2 || n == 3 )
                return true;

            if( n == 1 || n % 2 == 0 )
                return false;

            for( int i = 3; i * i <= n; i += 2 )
                if( n % i == 0 )
                    return false;

            return true;
        }

        /**
         * Internal method to return a prime number at least as large as n.
         * Assumes n > 0.
         */
        int nextPrime( int n )
        {
            if( n % 2 == 0 )
                n++;

            for( ; !isPrime( n ); n += 2 )
                ;

            return n;
        }

        /**
         * Construct the hash table.
         */
        template <class HashedObj>
        HashTable<HashedObj>::HashTable( const HashedObj & notFound, int size )
          : ITEM_NOT_FOUND( notFound ), array( nextPrime( size ) )
        {
            makeEmpty( );
        }

        /**
         * Insert item x into the hash table. If the item is
         * already present, then do nothing.
         */
        template <class HashedObj>
        void HashTable<HashedObj>::insert( const HashedObj & x )
        {
                // Insert x as active
            int currentPos = findPos( x );
            if( isActive( currentPos ) )
                return;
            array[ currentPos ] = HashEntry( x, ACTIVE );

                // Rehash; see Section 5.5
            if( ++currentSize > array.size( ) / 2 )
                rehash( );
        }

        /**
         * Expand the hash table.
         */
        template <class HashedObj>
        void HashTable<HashedObj>::rehash( )
        {
            vector<HashEntry> oldArray = array;

                // Create new double-sized, empty table
            array.resize( nextPrime( 2 * oldArray.size( ) ) );
            for( int j = 0; j < array.size( ); j++ )
                array[ j ].info = EMPTY;

                // Copy table over
            currentSize = 0;
            for( int i = 0; i < oldArray.size( ); i++ )
                if( oldArray[ i ].info == ACTIVE )
                    insert( oldArray[ i ].element );
        }

        /**
         * Method that performs quadratic probing resolution.
         * Return the position where the search for x terminates.
         */
        template <class HashedObj>
        int HashTable<HashedObj>::findPos( const HashedObj & x ) const
        {
/* 1*/      int collisionNum = 0;
/* 2*/      int currentPos = hash( x, array.size( ) );

/* 3*/      while( array[ currentPos ].info != EMPTY &&
                   array[ currentPos ].element != x )
            {
/* 4*/          currentPos += 2 * ++collisionNum - 1;  // Compute ith probe
/* 5*/          if( currentPos >= array.size( ) )
/* 6*/              currentPos -= array.size( );
            }

/* 7*/      return currentPos;
        }


        /**
         * Remove item x from the hash table.
         */
        template <class HashedObj>
        void HashTable<HashedObj>::remove( const HashedObj & x )
        {
            int currentPos = findPos( x );
            if( isActive( currentPos ) )
                array[ currentPos ].info = DELETED;
        }

        /**
         * Find item x in the hash table.
         * Return the matching item or ITEM_NOT_FOUND if not found
         */
        template <class HashedObj>
        const HashedObj & HashTable<HashedObj>::find( const HashedObj & x ) const
        {
            int currentPos = findPos( x );
            if( isActive( currentPos ) )
                return array[ currentPos ].element;
            else
                return ITEM_NOT_FOUND;
        }

        /**
         * Make the hash table logically empty.
         */
        template <class HashedObj>
        void HashTable<HashedObj>::makeEmpty( )
        {
            currentSize = 0;
            for( int i = 0; i < array.size( ); i++ )
                array[ i ].info = EMPTY;
        }

        /**
         * Deep copy.
         */
        template <class HashedObj>
        const HashTable<HashedObj> & HashTable<HashedObj>::
        operator=( const HashTable<HashedObj> & rhs )
        {
            if( this != &rhs )
            {
                array = rhs.array;
                currentSize = rhs.currentSize;
            }
            return *this;
        }


        /**
         * Return true if currentPos exists and is active.
         */
        template <class HashedObj>
        bool HashTable<HashedObj>::isActive( int currentPos ) const
        {
            return array[ currentPos ].info == ACTIVE;
        }

        /**
         * A hash routine for string objects.
         */
        int hash( const string & key, int tableSize )
        {
            int hashVal = 0;

            for( int i = 0; i < key.length( ); i++ )
                hashVal = 37 * hashVal + key[ i ];

            hashVal %= tableSize;
            if( hashVal < 0 )
                hashVal += tableSize;

            return hashVal;
        }


        /**
         * A hash routine for ints.
         */
        int hash( int key, int tableSize )
        {
            if( key < 0 ) key = -key;
            return key % tableSize;
        }
И еве тестирањето.


Код:
        #include <iostream>
        #include "QuadraticProbing.h"

        using namespace std;

            // Simple main
        int main( )
        {
            int ITEM_NOT_FOUND = -9999;
            HashTable<int> H( ITEM_NOT_FOUND );

            const int NUMS = 4000;
            const int GAP  =   37;
            int i;

            cout << "Checking... (no more output means success)" << endl;

            for( i = GAP; i != 0; i = ( i + GAP ) % NUMS )
                H.insert( i );
            for( i = 1; i < NUMS; i += 2 )
                H.remove( i );

            for( i = 2; i < NUMS; i +=2 )
                if( H.find( i ) != i )
                    cout << "Find fails " << i << endl;

            for( i = 1; i < NUMS; i += 2 )
            {
                if( H.find( i ) != ITEM_NOT_FOUND )
                    cout << "OOPS!!! " <<  i << endl;
            }
            system("pause");
            return 0;
        }

Еден куп грешки вади е па ај нека види нешто ако знае, се мачев ама ништо :)
 
Член од
15 декември 2008
Мислења
35
Поени од реакции
0
Ај едно прашање и од мене...

Значи сакам да прашам дали некој знае како да направам, на секое прашање да има дадено 3 одговори и секој одговор да носи различен број поени, но на крајот да можам да ги пресметам само поените само од внесените одговори.
Јас знам еден начин, меѓутоа ме интересира дали некој може да ми предложи некој начин каде што би бил што пократок кодот.

Еве како би изгледала мојата верзија...
(кодот на кратко ќе го опишам)

Код:
int a, b, c;
cout<<"Prashanje"<<endl;
cout<<"Odgovor 1"<<endl;
cout<<"Odgovor 2"<<endl;
cout<<"Odgovor 3"<<endl;
int izbor;
cin>>izbor;
switch (izbor)
     {
         case 1:
                 {
                     izbor = a;
                     a = 10;
                 break;
                 }
         case 2:
                {
                     izbor = b;
                     b = 15;
                 break;
                 }
         case 3:
                 {
                     izbor = c;
                     c = 20
                 break;
                 }
 
И на крај...
 
int vkupno;
vkupno = izbor + izbor_dva + izbor_tri...
cout<<"blabla"<<vkupno<<endl;
Значи овој код работи, али сакам некој начин каде што би употребил што помалце код... мислев... мислев... ама никако неможам да смислам некој соодветен начин. Ако има некој предлог... изволте.

Благодарам однапред.

Abe probuvav nesho namesto so CASE so IF da napisham ama zaglaviv ushe povekje:)
Imash idealno reshenie be, ne se machi:)
Sho znam, mozhebi postoi i dr nachin, treba proff da go prasham i kje se paam najpametna posle tuka ;) se shalam...:salut:
 
Член од
3 февруари 2007
Мислења
293
Поени од реакции
30
  • Дадена e низа од 5000 елемента. Кој од програмските сегменти може да се користи да ги отпечати вредностите нa beta[1], beta[3], beta[5] и т.н.
(Сите променливи се од int тип)

    • for (i = 0; i < 5000; i = i + 2)
cout << beta << endl;


    • for (i = 0; i < 2500; i = i++)
cout << beta[2*i] << endl;


    • for (i = 0; i < 5000; i = i++)
cout << beta[++i] << endl;


    • сите три горепонудени одговори
    • ниеден од горепонудените одговори
Decki moze mala pomos, koe e od ovie. Jas sum pocetnik za C++ i sega ko gi analiziras ovie, prvoto otpaga poso indeksite ke se menat 0,2,4 itn. Za vtoroto vaka ko go gleas, moze, ali ko go napisam u Dev-C++, pecati nuli beskonecno, barav u knigata, dali indeksot moze da bide izraz, t.e da ima mnozenje, delenje, ne pisuva nikade, ali spored toa so mi go dade programot, mislam deka izglea ne moze da bide operacija. Isto i ova tretoto ne mi ispaga u program, dali toa znaci deka nitu edno ne e tocno... ili...?
Lesno e ova, za nekoj ekspert, ako moze neka pise. Fala odnapred :)
 

Kajgana Shop

На врв Bottom