• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Symfonia C++] tablicowanie parametrów wywołania programu.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
509 wizyt
pytanie zadane 4 lutego 2016 w C i C++ przez Patryk Krajewski Nałogowiec (26,170 p.)

Witam wszystkich,

Rozwiązywałem sobię ostatnie zadanie w rozdziale 22. Treśc:

Napisz program, który wywoływany będzie z wieloma parametrami będącymi bądź to liczbami(zmiennoprzecinkowymi), bądź to wyrazami. Parametrow tych może być dowolnie dużo i nigdy nie wiesz, który z nich będzie liczbą, a który słowem. W programie wszystkie parametry, które są zapisem liczb poumieszczaj w tablicy double. Wszystkie nie-liczby zgromadz w tablicy obiektówe typu string. Wypisz na ekranie zawartość obu tablic.

Do tej pory napisałem taki program:

#include <iostream>
#include <vector>
#include <sstream>
using namespace std;


int main(int argc, char **argv)
{
    vector <string> words; //Vector przechowujacy wyrazy
    vector <double> numbers; //Vector przechowujacy liczby
    stringstream strumien;

    for(int i = 1; i < argc; i++)
    {
        strumien.str("");
        double liczba = 0;

        strumien << argv[i];
        strumien >> liczba;

        if(!strumien) //Jesli ustawiona jest flaga bledu w strumienie strumien
        {
            strumien.clear(strumien.rdstate() & ~ios::failbit); //Usuniecie flagi bledu
            words.push_back(strumien.str()); //Dodanie do vectora words
        }
        else //Jesli wszystko jest w porzadku
        {
            numbers.push_back(liczba);
        }
    }

    cout << "Parametry:\n"
         << "Liczby:\n";
    for(int i = 0; i < numbers.size(); i++)
    {
        cout << numbers[i] << endl;

    }
    cout << "wYRAZY\n";
    for(int i = 0; i < words.size(); i++)
    {
        cout << words[i] << endl;

    }

}

 

Wszystko jest dobrze jeśli wypisuje elementy zerowe tablic, ale dalej już nie. Proszę o pomoc.

1 odpowiedź

+1 głos
odpowiedź 4 lutego 2016 przez mustarrrd Obywatel (1,450 p.)
wybrane 4 lutego 2016 przez Patryk Krajewski
 
Najlepsza
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;

int main(int argc, char **argv)
{
    vector<string> words;
    vector<double> numbers;
    stringstream strum;

    for( int i = 1; i < argc; i++ )
    {
        strum.str("");
        double liczba;
        strum << argv[i];
        strum >> liczba;

        if( strum.fail() )
            words.push_back( argv[i] );
        else
            numbers.push_back( liczba );

        strum.clear();

    }

    cout << "Liczby:\n";
    for(int i = 0; i < numbers.size(); i++)
    {
        cout << numbers[i] << endl;
    }

    cout << "\nWyrazy:\n";
    for(int i = 0; i < words.size(); i++)
    {
        cout << words[i] << endl;
    }

}

 

Podobne pytania

+1 głos
0 odpowiedzi 551 wizyt
+1 głos
3 odpowiedzi 1,004 wizyt
0 głosów
2 odpowiedzi 353 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez CortezjuszPospolity Obywatel (1,130 p.)

93,187 zapytań

142,203 odpowiedzi

322,023 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2201p. - Michal Drewniak
  9. 2156p. - Marcin Putra
  10. 2152p. - Adrian Wieprzkowicz
  11. 2105p. - Mikbac
  12. 1941p. - Anonim 3619784
  13. 1733p. - rafalszastok
  14. 1701p. - Michał Telesz
  15. 1580p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...