Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pojemniki std::vector oraz szablony

Ostatnio zmodyfikowano 2013-01-12 23:29
Autor Wiadomość
kkaska89
Temat założony przez niniejszego użytkownika
[C++] Pojemniki std::vector oraz szablony
» 2013-01-10 23:35:12
Witam :) Dostałam na zajęciach program do napisania, ale niestety nie miałam na zajęciach w ogóle nic o pojemnikach. Szukałam podobnego programu na forum i różnych stronach i nie udało mi się nic znaleźć aby coś napisać. Problemem głównie jest użycie szablonu template. Treść zadania

Pojemnik vector wypełnij interakcyjni liczbami (int, long,float,double) - użyj szablonu (template). Posortuj zawartosc od najmniejszej do największej metoda bąbelkową. Ma to być napisane w języku c++.

Napisałam program ale z samym int, i nie mam pojęcia jak to przerobić by był ten szablon template. Może ktoś z Was spotkał się z tym problemem i zechciałby mi pomóc.

C/C++
#include <iostream>
#include <vector>

using namespace std;
int main()
{
    int n, x, temp;
    vector < int > tab;
    x = 0;
   
    cout << "Podaj ile liczb chcesz wprowadzic: ";
    cin >> n;
    cout << endl;
    for( int i = 0; i < n; i++ )
    {
        cout << "Podaj " << i + 1 << " liczbe: ";
        cin >> x; tab.push_back( x );
    }
    cout << endl;
   
    for( int i = 0; i < tab.size(); i++ ) {
        cout << tab[ i ] << ", ";
    }
   
    for( int i = 0; i < tab.size(); i++ )
    {
        for( int j = 0; j < tab.size() - 1; j++ )
        {
            if( tab[ j ] > tab[ j + 1 ] ) {
                temp = tab[ j ];
                tab[ j ] = tab[ j + 1 ];
                tab[ j + 1 ] = temp;
            }
        }
    }
   
    cout << " Po posortowaniu" << endl;
    for( int i = 0; i < tab.size(); i++ )
    {
        cout << tab[ i ] << ", ";
    } return 0;
}
P-73540
DejaVu
» 2013-01-10 23:53:31
Wydaje mi się mało prawdopodobne, abyś miała obsłużyć wszystkie cztery typy w swoim programie. Nie jest napisane do czego masz użyć szablonu. std::vector jest szablonem samym w sobie. Poza tym jest napisane 'użyj', a nie 'napisz' ani 'utwórz'.
P-73542
crash
» 2013-01-11 01:56:55
Podobnie mnie się zdaje do DejaVu, ale tak na wszelki wypadek:

C/C++
#include <iostream>
#include <vector>

using namespace std;

template < typename Typ >
void szablonowa()
{
    Typ n, x, temp;
    vector < Typ > tab;
    x = 0;
   
    cout << "Podaj ile liczb chcesz wprowadzic: ";
    cin >> n;
    cout << endl;
    for( int i = 0; i < n; i++ )
    {
        cout << "Podaj " << i + 1 << " liczbe: ";
        cin >> x; tab.push_back( x );
    }
    cout << endl;
   
    for( int i = 0; i < tab.size(); i++ ) {
        cout << tab[ i ] << ", ";
    }
   
    for( int i = 0; i < tab.size(); i++ )
    {
        for( int j = 0; j < tab.size() - 1; j++ )
        {
            if( tab[ j ] > tab[ j + 1 ] ) {
                temp = tab[ j ];
                tab[ j ] = tab[ j + 1 ];
                tab[ j + 1 ] = temp;
            }
        }
    }
   
    cout << " Po posortowaniu" << endl;
    for( int i = 0; i < tab.size(); i++ )
    {
        cout << tab[ i ] << ", ";
    } return 0;
}


int main()
{
    for(;; )
    {
        char x;
        cout << "[1]int\n[2]long\n[3]float\n[4]double\n[x]koniec";
        cin >> x;
       
        switch( x )
        {
        case 'x': return 0;
           
        case '1': szablonowa < int >(); break;
        case '2': szablonowa < long >(); break;
        case '3': szablonowa < float >(); break;
        case '4': szablonowa < double >(); break;
            default: cout << "\n\n>>Nieprawidlowy wybor\n";
        }
       
        cout << endl << endl;
    }
}
P-73546
kkaska89
Temat założony przez niniejszego użytkownika
» 2013-01-12 23:14:35
A może wiecie jak zastosować coś  takiego w tym moim programie, bo ja już próbuję i próbuję i nie przynosi to żadnych efektów. Jeśli ktoś z Was wie jak to rozwiązać to proszę o pomoc. Bo mi się wydaje że mam wprowadzić wszystkie 4 typy do jednego pojemnika i to posortować, no chyba że błędnie interpretuję zadanie.


template <class T>
class Wektor
{
private:
T a;
T b;


};

w main
Wektor<int> wektorSkladoweJakoInty;
Wektor<double> WektorSkladoweJakoDouble;
Wektor<Wektor> wektorSkladowejakoWektory;
P-73754
DejaVu
» 2013-01-12 23:29:07
Bo mi się wydaje że mam wprowadzić wszystkie 4 typy do jednego pojemnika i to posortować, no chyba że błędnie interpretuję zadanie.
Raczej błędnie interpretujesz zadanie, bowiem nie będziesz wiedziała po której wartości sortować. Poza tym pierwsze dwa użycia szablonu powinny zadziałać, a trzeci jest niedozwolony, bo jest to odwołanie do nieprawidłowego typu.
P-73758
« 1 »
  Strona 1 z 1