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

Zawiły fragment kodu

Ostatnio zmodyfikowano 2017-05-13 10:58
Autor Wiadomość
wld1337
Temat założony przez niniejszego użytkownika
Zawiły fragment kodu
» 2017-05-13 10:21:47
Witam,

Mam nadzieje, że znajdzie się jakaś dobra dusza, która pomoże początkującemu w stawianiu jego pierwszych kroków.
Mój problem wygląda następująco, dostałęm program do napisania - jednym z jego założeń jest to żeby dane wprowadzać jako argumenty programu w postaci
zmienna = wartość, tak że powiedzmy wprowadzam argument n=100, co powoduje że mojej liczbie n przypisywana jest wartość 100.
Dostałem coś takiego

C/C++
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

bool is_prefixed( const string & a, const string & b )
{
    if( a.size() > b.size() ) {
        return a.substr( 0, b.size() ) == b;
    } else {
        return b.substr( 0, a.size() ) == a;
    }
}

template < typename TYPE >
void parse_argument( TYPE * const output, const string & arg, const int argc, char * const argv[] )
{
    for( int i = 1 /* pomijamy pierwszy argument */; i < argc; ++i )
    {
        if( is_prefixed( argv[ i ], arg ) )
        {
            if( argv[ i ][ arg.length() ] == '=' )
            {
                istringstream ss(( argv[ i ] + arg.length() + 1 ) );
                ss >> * output;
            }
        }
    }
}

int main( int argc, char * argv[] )
{
    int n = 0;
    int k = 0;
    float p = 0; // załóżmy, że p jest liczbą zmiennoprzecinkową
   
    parse_argument( & n, "n", argc, argv );
    parse_argument( & k, "k", argc, argv );
    parse_argument( & p, "p", argc, argv );
   
    cout << n << " " << k << " " << p << " " << endl;
    return 0;
}

I wszystko okej, działa. Tylko niestety nie rozumiem części kodu do main, czy ktoś byłby w stanie mi to jakoś wytłumaczyć?[/i]
P-161037
darko202
» 2017-05-13 10:58:18
P-161040
« 1 »
  Strona 1 z 1