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

Zamiana tablicy typu string na tablicę typu int.

Object Storage Arubacloud
0 głosów
1,086 wizyt
pytanie zadane 16 czerwca 2019 w C i C++ przez Brzoza Nowicjusz (180 p.)

Tworzę program, który ma na celu wczytać kilka liczb po spacji a następnie je do siebie dodać. Problem napotałem w momencie w którym muszę zmienić konkretne szufladki typu string na typ int. Próbowałem wielu sposobów atoi(), stoi(),sstream. Jednak albo nie są w stanie pomóc mi w tej sytuacji, albo nie jestem w stanie użyć ich poprawnie. Chciałbym się dowiedzieć w jaki sposób mogę zamieniać typy w tablicach. Chciałbym nauczyć się tego raz a dobrze. Od momentu "komentarza programisty" zaczyna się mój problem. Reszta programu działa tak jak zakładałem, że powinna.

#include <iostream>
#include <string>
#include <sstream>
#include <cstdlib>
using namespace std;

int main()
{
    string  rt;

    int t,b=0;
    getline(cin,rt);
    t=atoi(rt.c_str());
    int wynik[t];


    for(int i=0; i<t; i++)
    {
        int y=0;
        string wpis,p;
        int n;

        getline(cin,p);

        n=atoi(p.c_str());

        int wypis[n];
        string zm[n];

        getline(cin,wpis);

        for(int i=0; i<=n; i++)
        {
            zm[i]=wpis[y];

            y=y+2;
        }
        wynik[0]=0;
//----------------------------------------------
        for(int i=0; i<=n; i++)
        {
            wypis[i]=atoi(wpis[i].c_str());
            wynik[b]=wynik[b]+wypis[i];
        }
        b++;
    }
    for(int i=0; i<t; i++)
    {
        cout<<wynik[i]<<endl;
    }
    return 0;
}

 

komentarz 22 czerwca 2019 przez mokrowski Mędrzec (155,460 p.)

Męczycie się w tym C++ ;)  ....w pythonie to dwie linijki kodu...

To jeszcze może przeczytaj czym różni się implementacja listy w języku python od tablicy w C/C++...

komentarz 22 czerwca 2019 przez j23 Mędrzec (194,920 p.)

@reaktywny, a w C++ to ile?

komentarz 22 czerwca 2019 przez reaktywny Nałogowiec (40,990 p.)
@mokrowski  - pełna zgoda, wiem ze to nie to samo, nie mówiąc o wydajności.

 

@j23 - Odniosłem się do kodu kolegi topic startera :), w Twoim rzeczywiście to lepiej wygląda, ale i tak python jest bardziej czytelny.
komentarz 23 czerwca 2019 przez niezalogowany
edycja 23 czerwca 2019

@j23, stworzyłem strukturę

struct intchar {
    int number;
    char ch;
};

i przeciąłem operator >> i wyjmowałem dane cinem spacje mi ładnie  wyciągał a entera nie.

Próbowałem też:

scanf ("%d %c", number, ch)

ta sama sytuacja.

Zrobiłem więc:

int main(){
    int suma=0,number;
char zmienna= cin.peek();
while (!(zmienna=='\n')){
    cin>>number;
    suma+=number;
    // nie działałało to zrobiłem:
    cout<<suma;
    cout<<(int)zmienna; 
}
}

wejście:14 12 134

wyjście 1449264916049 i to właśnie char = 49 (49-48 = 1)mnie zastanawia

a program jak nie działał jak powinien

dlatego pomyślałem, cin ma na końcu EOF=-1.

Pomysły różne a rozwiązań 0.

Czy można jeszcze jakiś przykład działania unget()?

edit: while (cin.peek()!='\n') działa poprawnie, ale i tak jest (int)cin.peek()= 49, ale już chyba ogarnąłem co kiedy :)

komentarz 23 czerwca 2019 przez j23 Mędrzec (194,920 p.)

while (cin.peek()!='\n') działa poprawnie...

... ale jest dość ryzykowne, bo gdy strumień wejdzie w stan fail, pętla będzie kręcić się bez przerwy.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
2 odpowiedzi 188 wizyt
0 głosów
2 odpowiedzi 218 wizyt
0 głosów
1 odpowiedź 626 wizyt
pytanie zadane 25 listopada 2020 w C i C++ przez rinsu Nowicjusz (170 p.)

92,573 zapytań

141,423 odpowiedzi

319,647 komentarzy

61,959 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...