Zapis danych wprowadzonych przez użytkownika we wektorze

0

Chciałam napisać program, który będzie zapisywał dane wprowadzone przez użytkownika we wektorze.
Niestety we wektorze zapisują się nieprawidłowe wartości. Czy ktoś mógłby podpowiedzieć mi co jest źle?

int main()
{
vector<double> wektor;
double x {};
int n {};

cout << "Podaj liczbe elemntow \n n=";
cin >> n;

cout << "Wprowadz " << n << " liczb" << endl;

for (int i = 1; i <= n; i++)
{ cout << "n" << i << "=";
cin >> x;
wektor.push_back( n );
cout << "n" << i << "="<<wektor[i]<<endl;}
return 0;
}

Zrzut ekranu (893).png

0

ogólnie już na samym początku masz błąd logiczny. Używasz n do przebiegów pętli, który jest int następnie coś do niego zapisujesz a później to do vectora double. Trochęto nie ma sens.
popatrz sobie też na
https://stackoverflow.com/questions/8377660/how-to-cin-to-a-vector/31147509

2

Pętla powinna zaczynać się od zera, gdyż indeksy tablic, kontenerów też zaczynają się od zera..

Stąd w linijce:

cout << "n" << i << "="<<wektor[i]<<endl;

wyświetlasz element z poza zakresu wektora = czyli jakieś śmieci.

0

@revcorey: To literówka. W oryginalnym programie miałam długie nazwy, wynikające z kontekstu całego zadania, zmieniłam je, aby nie zaciemniały obrazu. Użytkownik zapisuje dane do zmiennej x typu double, potem wartość tej zmiennej ma zostać umieszczona we wektorze typu double o nazwie wektor, a liczba elementów tego wektora to wartość wprowadzona do zmiennej n typu int, która odpowiada za obieg pętli.
Dziękuję za link!

0

@TomaszLiMoon: No tak. Wyświetlałam element, który jeszcze nie istniał. Przy pierwszym obiegu pętli powstawał element o indeksie 0, a ja chciałam wyświetlić element o indeksie 1 itd, więc dostawałam śmieci. Dziękuję bardzo!

0

I chyba jeszce powinno być: wektor.push_back( x );, a nie n.

0
cin >> x;
wektor.push_back( n );

Tutaj tez wyglada na blad, pewnie chcialas tam wrzucac elementy typu double ze zmiennej x, a nie int n (czyli ilosc elementow)

0

@tmk3: Tak. Program już działa. Jeszcze raz dzięki!

1
blue_dragon napisał(a):

W oryginalnym programie miałam długie nazwy, wynikające z kontekstu całego zadania, zmieniłam je, aby nie zaciemniały obrazu.

Na marginesie: długie nazwy zmiennych zwykle rozjaśniają obraz niż zaciemniają. O ile są sensowne...

0

Jaki kompilator/platforma?
Jeśli gcc/clang polecam dodać do kompilatora opcje: -Wall -Wextra -Werror -fsanitize=address, kompilator i sanitizer wyłapię ci 95% klasycznych błędów początkującego.
Demo: https://godbolt.org/z/7P7d77879

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