C/C++

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Хмм... Симона, чекај сеа малце, дадени одговори се:

- сите три горепонудени одговори
- ниеден од горепонудените одгово

е сеа со првите 2 сегменти ќе ти печати парни броеви, а со третиот сегмент ќе ти печати непарни броеви.

Такада третото е точно, само незнам... немаш опција според понудените одговори да бираш дека само третото е точно :toe:
 
Член од
3 февруари 2007
Мислења
293
Поени од реакции
30
Ako samo tretoto e tocno, togas ke go zaokruzam samo tretoto. Samo za tretoto me buni, toa so tamu ++i neli se odnesuva samo za indeksot, a i ke go otpecati prvo brojot so indeks 1, a posle so brojacot i++, i stanuva od 0 vo 1, a mislam deka ne stanuva 2, zatoa so kaj indeksot e izvrseno ++i. I sega ko doaga brojacot 1, togaj so kaj beta[++i] stanuva beta[2]... t.e. dali toa ++i u beta se smeta i dali na toa se vrsi i++? Ja mislam deka ne, ako sum u pravo togas i tretoto ne e tocno.
 
Член од
20 декември 2008
Мислења
1
Поени од реакции
1
Само третото е точно.
Ти сакаш да ти ги печати beta[1], beta[3], beta[5].
for (i = 0; i < 5000; i = i++)
cout << beta[++i] << endl;


i++ - Се зголемува па се извршува што треба во задачата
++i - Се извршува што треба во задачата па се зголемува потоа за 1

Значи прво се зголемува од 0 на 1 па потоа се извршува cout каде се печати вредноста beta[1] па потоа се зголемува пак за 1, потоа пак оди втор пат на for каде е i++ и се зголемува на 3, па се печати долу beta[3] и така се повторува се` додека i е помал од 5000.

Се надевам сега ти е малку појасно.

Е па вака ај да го ставам кодот :)

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;
        }
Еден куп грешки вади е па ај нека види нешто ако знае, се мачев ама ништо :)

Го разгледав кодот и ако добро разбрав треба да се изврши тоа па да испечати само: Checking... (no more output means success).
Ако е тоа тогаш еве линк за да си го симнеш.

Код:
http://w14.easy-share.com/1702918292.html
Направи Compile And Execute на Testing.cpp.

Се надевам помогнав. Поздрав
 

SkyDriver

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

- Сите 3 се точни.
- Сите 3 се неточни.

Ајде народе решавајте сеа некои мини задачи :)

Код:
1. За сите од следните  тврдења заокружете вистинито ( Т ) или лажно ( F )
(секој точен одговор носи 1 поен) 
a)  C++ функцијата main е void функција.    T             F
b) void функција користи само референцни параметри.      T              F 
c) Функција која враќа вредност, враќа само една вредност на функцијата повикувач.     T             F
d) Дереференцирањето на pointer променлива ја враќа мемориската адреса на променливата на која покажува pointer променливата. 
 T             F
e) Повикувањето на void функција се врши од издвоена инструкција во функцијата повикувач, која го содржи името на функцијата и актуелните аргументи (ако постојат) во мали загради.  T             F

2. Што е излез од следниов програм                               (2 поени)
#include <iostream>
using namespace std;
void Fun2( float );
const int a = 3;
int b, c;
int main( )
{
    b = 1;
    c = 2;
    Fun2(5.1);
    cout << a << “  “ << b << “  “ << c;
    return 0;
}
void Fun2( float c)
{
    float b = 7.7;
    cout << a << “  “ << b << “  “ << c << “  “;
}

a) 3  7.7  5.1  3  1  2        b) 3  7.7  2  3  1  2         c) 3 1 2        d) 3 7.7 2

3. Во повиканата функција треба да се користи параметар по вредност ако
протокот на податокот што се предава на параметарот е:         (2 поени)
a) влезно-излезен.  
b) влезен (од функцијата повикувач во повиканата функција).
c) излезен (од повиканата функција во функцијата повикувач).
d) двата понудени одговора а и b погоре.
    e) двата понудени одговора b и c погоре.

4. Дадена e низа од 5000 елемента. Кој од програмските сегменти може да се користи да ги отпечати вредностите на beta[0], beta[2], beta[4] и т.н.
(Сите променливи се од int тип)                (3 поени)
a.    for (i = 0; i < 5000; i = i + 2)
cout << beta[i] << endl;
      
b.    for (i = 0; i < 2500; i = i++)
cout << beta[2*i] << endl;      

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

d.    сите три горепонудени одговори
e.    Понудените одговори под a и b

5. Дадена декларација                    (3 поени)
struct Student
{
    int id;
    int age;
    float gpa;
};

која инструкција е коректна за креирање и иницијализирање на променлива од тип  Student:                         
Student.id = 2134;            b)  Student st1;
Student.age = 19;                  st1.id = 2134;
    Student.gpa = 7.24;                  st1.age = 19;
                              st1.gpa = 7.24;

и двата понудени одговори     d)   ниту еден од понудените
под a и b се коректни                одговори не е коректен

6. Дадени декларации:                    (4 поени)

struct Slog1
{
    char ime1;
    int broj1;
};

struct Slog2
{
    char ime2;
    int broj2;
};

Slog1 aSlog, bSlog;
Slog2 cSlog;

Која од следните инструкции на доделување е коректна:
aSlog = bSlog;            
bSlog.ime1 = cSlog.ime2;
aSlog = cSlog;
првите два понудени одговори (a и b)
сите три претходно понудени одговори ( a, b и c)

7.  Што е излез по извршување на програмскиот сегмент:    (4 поени)

      int arr[5], i;
for (i = 0; i < 5; i++)
{
     arr[i] = i + 2;
     if (i >= 3)
    arr[i-1] = arr [i] + 3;
}
cout << arr[1];

a) 2        b) 3        c) 4        d) 8

8.    Што е излез од следниот програмски сегмент:        (5 поени)
int x = 2, sum, count = 0;
    sum=1;
    while(count++ <= 3)
    {
        sum +=x++;
        cout<<sum<<" ";
    }

4 8 13 19                   b)   3 6 10            
3 6 10 15                d)   4 8 13

9.    Што е излез од следниот програмски сегмент:        (5 поени)

    int i;
    for( i = 1; i <= 5; ++i )
    {
        cout << --i << " ";
        i += 2;
    }

    a) 0 2 4            b) 1 3 5
    c) 1 3 5 7            d) 0 2 4 6

10.  Кој од понудените одговори за пренос на C++ низи како параметри е неточен                               (4 поени)

не е можно да се пренесе низа како вредносен параметар
кога декларираме низа како параметар во функција, не прикачуваме амперсанд (&) на типот на компонентите на низата
при извршување, базната адреса на низата се предава на функцијата
последниот (најголем) индекс на низата е еднаков со нејзината должина во декларацијата.

      11.  За дадениот програмски сегмент            (4 поени)
    char alpha[200];
    char beta[200];
    …
Copy_plus1(alpha, beta, 200);   // Dodava 1 na site komponenti od beta i gi kopira 
                                                   // komponentite od beta vo alfa

    кој функциски heading од долу понудените е валиден:

void Copy_plus1( char arr1[ ], const char arr2[ ], int length )
void Copy_plus1( const char arr1[ ], const char arr2[ ], int length )
void Copy_plus1( char arr1[ ], char arr2[ ], int length )
void Copy_plus1( const char arr1[ ], char arr2[ ], int length )

 
      12.  За дадениот функциски heading                (4 поени)

    void GetNums( int howMany, float& alpha, float& beta )
    
    кој не е валиден функциски прототип:
void GetNums( int howMany, float& alpha, float& beta );
void GetNums( int, float&, float& );
GetNums( int, float&, float& );
сите три понудени одговори се валидни

     13.  Дадена функциска дефиниција                (5 поени)

    void Twist( int a, int& b )
    {
        int c;
        c = a * 2;
        a = a + 3;
        b = c + a;
    }

    Што е излез од следниот програмски сегмент кој ја повикува Twist (сите променливи се од тип int):

    r = 1;
    s = 2;
    t = 3;
    Twist(t, s);
    cout << r << ‘ ‘ << s << ‘ ‘ << t << endl;

    a) 1 2 6        b) 1 12 3        c) 1 12 6

    d) 1 6 6        e) ниту еден од понудените одговори

14. (Екстра 10 поени)

    Дадена низа од 1000 неподредени цели броеви. Да се напише програма која ќе ги подреди броевите по големина (почнувајќи од најмалиот кон најголемиот) и потоа ќе ја отпечати подредената низа на монитор по 10 броја во ред.
 
Член од
28 јануари 2007
Мислења
9.850
Поени од реакции
1.559
Само третото е точно.
Ти сакаш да ти ги печати beta[1], beta[3], beta[5].
for (i = 0; i < 5000; i = i++)
cout << beta[++i] << endl;


i++ - Се зголемува па се извршува што треба во задачата
++i - Се извршува што треба во задачата па се зголемува потоа за 1

Значи прво се зголемува од 0 на 1 па потоа се извршува cout каде се печати вредноста beta[1] па потоа се зголемува пак за 1, потоа пак оди втор пат на for каде е i++ и се зголемува на 3, па се печати долу beta[3] и така се повторува се` додека i е помал од 5000.

Се надевам сега ти е малку појасно.




Го разгледав кодот и ако добро разбрав треба да се изврши тоа па да испечати само: Checking... (no more output means success).
Ако е тоа тогаш еве линк за да си го симнеш.

Код:
http://w14.easy-share.com/1702918292.html
Направи Compile And Execute на Testing.cpp.

Се надевам помогнав. Поздрав
Па да тоа треба да се испечати, ја средив вчера баш, без тоа QudraticProbing.cpp само со хедерот и тестирањето работи, ама има некоја грешка никогаш не престанва :) ама нема гајле готово веќе ја испратив .
Сепак фала на помошта.
 
Член од
3 февруари 2007
Мислења
293
Поени од реакции
30
off: @ Sky driver, abe od kaj si ti, mislam kaj studiras, zaso nie imame vakvi primeri za vezbanje! Aj pisi pp.
Inace od ovie so gi vezbav, kaj strukturite, t.e sestoto prasanje. Prvoto pod a e sigurno tocno, bidejki aSlog i bSlog se od ist tip od tip Struct1. Sea fakt e deka i dvete structuri i Struct1 i Struct2 sodrzat ist tip i ist broj na elementi. Ali pravioloto e deka ako promenlivite ne se od ist tip na structura ne moze da se vrsi predavanje na vrednost, t.e. aSlog=cSlog. SO znaci deka ova ne bi bilo mozno i mi javuva i greska u kompajlerot. A za tretoto, ne javuva greska, valjda oti se pristapuva direktno na clenot, i ime1 i ime2 se od ist tip, od tip char. Taka da samo tocno e pod a i b, t.e tuka takov odgovor e cetvrtiot.
Mislenje od postrucen za ova ....??? :)

Decki, izvinete za premnogute baranja, no polagam vo vtornik i sega vezbam. Ako ima nekoj praveno matrica na n-ti stepen, ko vezbal, neka go iskopira samo kodot tuka. Pozdravceee
 
Член од
17 февруари 2008
Мислења
53
Поени од реакции
5
Aj nekoj ako saka da mi ja resi zadacava, mnogu blagodaren ke mu bidam!

Da se sostavi funkcija koja sto na vlez kako parametar dobiva pokazuvac kon niza od 100 celi broevi i go naoga i vraka maksimumot od elementite?
 
Член од
14 јануари 2008
Мислења
1.341
Поени од реакции
162
Aj nekoj ako saka da mi ja resi zadacava, mnogu blagodaren ke mu bidam!

Da se sostavi funkcija koja sto na vlez kako parametar dobiva pokazuvac kon niza od 100 celi broevi i go naoga i vraka maksimumot od elementite?

HTML:
#include<iostream>
using namespace std;

int funk(int *p)
{

    int i=0,max;
    max = *p;
    for(i=0;i<100;i++)
    {
        if(*(p+i)>max)
        max = *(p+i);
    }

    return max;
};

int main()
{
        int *p,i; 
        
    int A[100];
    for(i=0;i<100;i++)
    cin >> A[i];

    p = &A[0];

    cout << funk(p);
}
Eve go celiot program zasto e bitno da se inicijalizira pokazuvacot na prviot element od poleto. Mislam deka p = &A e isto taka validna inicijalizacija.

Само третото е точно.
Ти сакаш да ти ги печати beta[1], beta[3], beta[5].
for (i = 0; i < 5000; i = i++)
cout << beta[++i] << endl;


i++ - Се зголемува па се извршува што треба во задачата
++i - Се извршува што треба во задачата па се зголемува потоа за 1
Obratno.
 

mRnO

И по mRnO,mRnO
Член од
16 април 2006
Мислења
6.263
Поени од реакции
52
На некој да не му се наоѓа некое примерче и алгоритамче за енкрипција у C:)
 

r3.Buki

Buki[z]
Член од
19 јуни 2008
Мислења
54
Поени од реакции
2
Pozz kolegi ako moze nekoj da ja resi zadacava zs za mene e malku poslozena:):

Da se napise programa koja ke cita kvadratini matrici so od red n i potoa ke ja transponira(redicite i kolonite ke si gi zamenat mestata).Preureduvanjeto na matricata da se realizira so posebna funkcija

|0 2 9|-------|0 5 6| |...|
|5 4 3|-----> |2 4 7| |...|------> matrica
|6 7 1|-------|9 3 1| |...|


Odnapred blagodaram:):helou:
 
Член од
14 јануари 2008
Мислења
1.341
Поени од реакции
162
Pozz kolegi ako moze nekoj da ja resi zadacava zs za mene e malku poslozena:):

Da se napise programa koja ke cita kvadratini matrici so od red n i potoa ke ja transponira(redicite i kolonite ke si gi zamenat mestata).Preureduvanjeto na matricata da se realizira so posebna funkcija

|0 2 9|-------|0 5 6| |...|
|5 4 3|-----> |2 4 7| |...|------> matrica
|6 7 1|-------|9 3 1| |...|


Odnapred blagodaram:):helou:
HTML:
#include<iostream>
using namespace std;
void transponiraj(int *p, int n);

int main()
{
    int n,i,j;
    int *p;
    cin >> n;

    int A[n][n];

    p = &A[0][0];

    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        cin >> A[i][j];
    
    transponiraj(p,n);
    


    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        cout << A[i][j];
        cout << endl;
    }
}

void transponiraj(int *p, int n)
{
    int i,j,temp;
    for(i=0;i<n;i++)
        for(j=i;j<n;j++)
        {
            temp = *(p + i*n + j);
            *(p + i*n + j) = *(p + j*n + i);
            *(p + j*n + i) = temp;
        }
};
Bi trebalo da raboti.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Вака сега, еден другар прави семинарска... па ме праша дали знам да пресметам комплексност на програм во C, арно ама јас во C ги знам само најосновните работи... такада ова да му го решам тешко. Некој да не знае (по можност и мини објаснивање) ?

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

диме

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

Благодарам однапред.
Ако мислиш на Time Complexity:
http://www.daniweb.com/forums/thread13488.html
 

Kajgana Shop

На врв Bottom