Problem z vektorem

Odpowiedz Nowy wątek
2011-07-19 14:22
MakeMeHappy^
0

Moze mi ktos powiedziec co jest zlego z tym kodem ze nie dziala? Bo ja jakos nie moge sie doszukac...

#include <algorithm>
#include <iostream>
#include <vector>
 
using namespace std;
 
void main() {
    vector<int> v(0,0);
    int temp;
    int i = 0;
    while(cin>>temp){
         v.push_back(temp);
         ++i;
         if (i >= 5) {
               for (int i2 = 0; i < v.size(); ++i2)
                     cout << v[i2];
         }
    }
}

Kiedy i2 dochodzi do 5, program nie wyswietla wszystkich wartosci vektora. Moga znalezc sie bledy pisowni bo kod mialem na innym komputerze bez internetu wiec na szybko przepisalem.

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-07-19 14:33
1

Jak nie zaczniesz nazywać zmiennych jak człowiek to tak będzie...

for (int i2 = 0; i < v.size(); ++i2)

Konkretnie:
i < v.size();
ten warunek na pewno spełniony nie będzie...

#include <algorithm>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> v;
    int temp;
    int n = 0;
    while(cin>>temp)
    {
        v.push_back(temp);
        n++;
        if (n >= 5)
        {
            for (unsigned int i = 0; i < v.size(); i++)
                cout << v[i];
        }
    }
    return 0;
}

Pozostało 580 znaków

2011-07-19 20:40
0

Okej, to co napisałeś pomogło jednak mam jeszcze jedno małe pytanko. W książce napisane jest że pętla

while(cin>>temp)

jest wykonywana dopóki wczytywanie zakończy się błędem(w tym przypadku np. poprzez wpisanie literki zamiast liczby). Jeśli napisałem coś po pętli
i celowo ją przerwałem wpisując literkę to dlaczego program wyłącza się zamiast przechodzić do poleceń po pętli?

Pozostało 580 znaków

2011-07-19 20:42
0

Przechodzi do poleceń po pętli, ale strumień dalej tkwi w stanie błędu. Do czasu aż usuniesz mu flagę błędu(metoda clear). Pokaż kod to się wyjaśni.


edytowany 2x, ostatnio: byku_guzio, 2011-07-19 20:43

Pozostało 580 znaków

2011-07-19 20:46
0
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
 
using namespace std;
 
void main() {
    double odleglosc;
    vector<double> v(0,0);
    while(cin>>odleglosc)
        v.push_back(odleglosc);
    sort(v.begin(), v.end());
    double suma = 0.0;
    for(unsigned int i = 0; i < v.size();i++)
        suma += v[i];
    cout << "Suma to: " << suma << "\nNajmniejsza odleglosc to: " << v[0] << "\nNajwieksza odleglosc to: " << v[v.size() -1];
    cout << "\n Srednia droga to: " << suma/v.size();
    char ch;
    cin >> ch;
}

Pozostało 580 znaków

2011-07-19 20:53
0

Zakładam, że odpalasz to w jakimś DevC++, który nie zatrzymuje konsoli...

1) NIE void main()... ale int main i na końcu dobrze jest dać (ale nie potrzeba - jest dodawane domyślnie) return 0;
2) wszystko się wykonuje tak jak ma, tyle, że cin >> ch; nie czeka na znak, ponieważ strumień jest w stanie błędu. Zaraz za pętlą daj cin.clear(); cin.sync(); cin.sync() wyczyści strumień z nieprzeczytanych znaków, a clear() zdejmie flagi błędów


edytowany 1x, ostatnio: byku_guzio, 2011-07-19 20:55

Pozostało 580 znaków

2011-07-19 21:05
0

Heh dzięki wielkie wszystko pięknie działa. Nie rozumiem jak autor książki może ode mnie oczekiwać takich rzeczy skoro nic o tym nie wspomniał(nie doszedłem nawet do funkcji...)

Zapewne nie czytasz nawet książki tylko stuletni tutorial... - Shalom 2011-07-20 09:15
Bjarne StrouStrup - Programowanie. Teoria i praktyka z wykorzystaniem c++. - MakeMeHappy 2011-07-21 00:37

Pozostało 580 znaków

2011-07-23 00:54
0

Okej już wszystko jasne. Autor napisał własną bibliotekę którą rekomendował używać przez pierwsze kilka rozdziałów. Zdefiniował tam funkcję którą w książce opisał tak:

char ch;
cin>>ch;

Jednak w bibliotece owa funkcja prezentuje się tak:

    cin.clear();//tu jest
    cout << "Please enter a character to exit\n";
    char ch;
    cin >> ch;
    return;

Dzięki wszystkim za pomoc!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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