• 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.

0 głosów
1,814 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 (159,000 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 (195,220 p.)

@reaktywny, a w C++ to ile?

komentarz 22 czerwca 2019 przez reaktywny Nałogowiec (46,230 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 (195,220 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 570 wizyt
0 głosów
2 odpowiedzi 714 wizyt
0 głosów
1 odpowiedź 1,784 wizyt
pytanie zadane 25 listopada 2020 w C i C++ przez rinsu Nowicjusz (170 p.)

93,800 zapytań

142,768 odpowiedzi

323,461 komentarzy

63,421 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...