Strumień wejściowy.

2015-11-27 20:06

Rejestracja: 5 lat temu

Ostatnio: 11 miesięcy temu

0

Witam. Pisze ćwiczenie na SPOJ ( 549. Proste dodawanie) i chce wczytać całą linię ze strumienia wejsciowego. Użyłem funkcji getline. Jednak nie wpisuje do zmiennej zawartosci strumienia. oto kod:

 #include <iostream>
#include <cmath>
#include <sstream>
#include <string>
#include <cstdio>

using namespace std;

string ToString(int i)
{
    ostringstream ss;
    ss << i;
    string str = ss.str();
    return str;
}
int toInt(string t)
{
    int i;
    istringstream iss(t);
    iss>>i;
    return i;
}
int main()
{
    int ileSumowan,ileLiczb,j;

    string liczba;
    do{
     cin>>ileSumowan;
    }while(ileSumowan>=0 && ileSumowan<=100);
    int* tab = new int[ileSumowan];
    for(int i=0;i<ileSumowan;i++)
    {
        j=0;
        cin>>ileLiczb;
        cin.ignore();
        string temp="";
        getline(cin,temp);
        cout<<temp<<endl; //nie wypisuje zawartosci temp
        return 0; //umiescilem tutaj return by sprawdzić czy wejscie dobrze działa a reszty kodu nie pisałem eszcze dlatego while jest puste.
        while(j<ileLiczb)
        {

            do{

            }while(true);
        }
    }
}

Myślałem że samo getline jest źle uzupełnione lecz przy przeklejeniu paru linii kodu, od cin>>ileLiczb do return normalnie wypluło linie wprowadzone z klawiatury.

Pozostało 580 znaków

2015-11-27 20:10

Rejestracja: 6 lat temu

Ostatnio: 5 dni temu

W pierwszym wierszu znajduje się liczba t testów (0 < t < 100) Każdy test opisany jest w następujący sposób. W pierwszym wierszu dana jest liczba n - liczba liczb do zsumowania. Następnie podanych jest n liczb pooddzielanych spacją.

Nie potrzebujesz zaciągać ze strumienia stringa tylko po to, by potraktować go zaraz znowu jak strumień i wyciągnąć z niego liczbę.

#include <iostream>
using namespace std;

int main() {
    size_t tests = 0;
    cin >> tests;
    while(tests --> 0){
        size_t count = 0;
        cin >> count;

        int sum = 0;
        while(count--){
            int number = 0;
            cin >> number;
            sum += number;
        }

        cout << sum << endl;
    }
    return 0;
}

czy tam

#include <iostream>
using namespace std;

template<typename T>
T read(istream &in = cin){
    T result;
    cin >> result;
    return result;
}

int main() {
    size_t tests = read<int>();
    while(tests --> 0){
        size_t count = read<int>();

        int sum = 0;
        while(count--){
            sum += read<int>();
        }

        cout << sum << endl;
    }
    return 0;
}
edytowany 3x, ostatnio: spartanPAGE, 2015-11-27 20:18

Pozostało 580 znaków

2015-11-27 20:16

Rejestracja: 5 lat temu

Ostatnio: 11 miesięcy temu

0

No, tylko że tylko tak w miare rozumiem jak to trzeba zrobić. Możesz podpowiedzieć w jaki sposób byś widział fragment kodu odpowiedzialny za wyciaganie danych? chociażby w pseudokodzie.

@Unlucky ze względu na prozaiczność zadania masz powyżej gotowce w przystępnej wersji :) - spartanPAGE 2015-11-27 20:18
@spartanPAGE tylko jest problem. Nie za bardzo rozumiem wszystkich elementów tutaj. :) Jestem początkującym a nie zalezy mi tylko na zaliczeniu zadania lecz na zrozumieniu rozwiazania:) - Unlucky 2015-11-27 20:20
@spartanPAGE najbardziej mi chodzi o wariant z użyciem Template - Unlucky 2015-11-27 20:24
@Unlucky tutaj: wczytuję i zwraca liczbę ze strumienia (domyślnie wejściowego) - spartanPAGE 2015-11-27 20:28
dziękuje, @spartanPAGE pokazałeś mi fajny sposób na operowanie wejsciem :) Bardzo mi się przyda:) - Unlucky 2015-11-27 20:32

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0