c++ erase
Metis: C++
Czemu taki program wyrzuca błąd:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cctype>
#include <string>
using namespace std;
int x = 0;
string text;
int main()
{
cout << "Wpisz swoj tekst: " << endl;
getline(cin, text);
x = text.length();
for (int i = 0; i < x; i++)
{
if (isdigit(text.at(i)))
{
text.erase(i);
}
}
cout << text;
getch();
}
18 sty 19:49
KKrzysiek: Napisałbyś jaki błąd i w której linijce
18 sty 19:50
Metis: to nie błąd kompliatora.
18 sty 19:51
wmboczek: Ale co się sypie? Próbowałeś drukować wyniki pośrednie?
Jakie argumenty ma funkcja text.at? Może text.at(0) nie istnieje?
18 sty 19:59
Metis: Sypie sie gdy wpisze tekst z liczbami, to jest nie usuwa i wywala błąd pamięci
18 sty 20:00
wmboczek: usunięcie zmienia długość text a w pętli tego nie uwzględniono
?
18 sty 20:03
Metis: racja
Jak rozwiązac ten problem?
18 sty 20:07
Metis: Teraz rozumiem dlaczego w innym kodzie dodane jest:
string::iterator y;
y = tekst.begin() + i;
18 sty 20:08
wmboczek: wewnątrz if daj x=x−1
18 sty 20:09
wmboczek: chyba jeszcze i=i−1 będzie konieczne by nie przeskoczyć znaków
18 sty 20:12
Metis: Dzięki za znalezienie błedu
Za chwilę sprawdzę działanie tego programu
18 sty 20:12
Metis: I teraz rozumiem dlaczego
Dziadek radził kopiowanie
To rozwiązałoby też problem.
18 sty 20:13
Metis: Kolejny problem mam tutaj:
Chce by liczby zapisywane były na bięzaco w tabeli, ale to od uzytkownika zalezy ile tych liczb
wpisze, wiec nie moge zadeklarowac stałego rozmiaru tablicy
Czegoś mi brakuje
Program wykonuje się, ale nei wchodzi do pętli for
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int liczba, *tab;
char znak;
int main()
{
while (znak != 'T')
{
for (int i = 0; i > 0; i++)
{
cout << "Podaj " << i+1 << " liczbe:" << endl;
cin >> tab[i];
}
cout << "Czy chcesz zakonczyc dzialanie programu?(T/N)" << endl;
znak = getch();
}
getch();
}
18 sty 20:28
Metis: Mogę to zrobić też tak:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int liczba, *tab, x;
int main()
{
cout << "Ile liczb chcesz wprowadzic: " << endl;
cin >> x;
tab = new int[x];
for (int i = 0; i <x; i++)
{
cout << "Podaj " << i+1 << " liczbe:" << endl;
cin >> tab[i];
}
getch();
}
18 sty 20:32
Jack: Dlaczego tab jest wskaznikirm na typ int? W sensie czemu wskaźnik
18 sty 20:33
Metis: Deklaruje rozmiar tablicy w zaleznosci od tego ile liczb chce wpisac uzytkownik.
18 sty 20:35
Jack: Chociaz nie, czekaj, glupoty gadam
18 sty 20:36
5-latek: Metis
Miales napisac jak Ci poszlo kolokwium .
Zagladam na poczte i nic
18 sty 20:40
Jack: Moze w jednej linijce to zrobic
int *tab = new int[x];
Albo brakuje delete [] tab na koncu;
Albo lepiej sie juz nie wypowiadam xd
18 sty 20:40
jc: Metis, taka drobna uwaga: int liczba, *tab, x; lepiej umieścić wewnątrz funkcji main().
18 sty 20:45
Metis: Ten drugi działa
Jack, ale dzięki , zapomniałem o delete
Cześć
Krzyśku
Praca wre, przepraszam zapomniałem
Zdobyłem z niego połowe punktów.
W liczeniu stycznej do funkcji:
na kartce przepisałem e
x−5 i całe zadanie policzyłem dobrze dla tego wzoru − mając 1 strone
obliczeń wiecej(pochodna).
Profesor dał mi 2 pkt, zamiast 5, ale doceniam te 2, bo zmieniłem przeciez cały wzór funkcji.
Straciłem za dużo czasu na to zadanie przez złozonosc obliczeń, i 4) nie ruszyłem w ogóle.
A pierwsze dwa zadania miałem dobrze
Z kolejnego musze uzyskac kolejną połowe i nie muszę w teorii podchodzić do egzaminu w sesji.
18 sty 20:47
Metis: Ok,
jc
18 sty 20:48
5-latek: Dobrze
18 sty 20:49
Metis: Mam takie zadanie:
Podać sposoby przekazywania wartości do funkcji podać ich podobieństwa i różnice.
Czy taka odpowiedź będzie prawidłowa? :
W jezyku programania c++ wyróżniamy 3 sposoby przekazywania wartości do funkcji:
1) Najpopularniejsza − przez wartość
2) przez wskaźnik
3) przez referencję
W przypadku 1) i 2) zmienna jest kopiowana. W przypadku 3) już tak nie jest.
Kopiowanie danych do funkcji nie jest żądaną metodą ( zmienne mogą być duże i czas wykonywania
programu może się wydłużyć)
18 sty 20:53
Metis: Co mogę jeszcze dodac?
18 sty 20:53
jc: Właściwie sposoby (1) i (2) różnią się tylko notacją. W jednym i drugim przypadku
funkcja dowiaduje się, gdzie znajduje się zmienna i w ten czy inny sposób kopiowany
jest adres zmiennej.
18 sty 21:02
KKrzysiek: @Metis, ja z obu dostałem 100 , ale i tak muszę podejść XD. Co za ironia.
18 sty 21:03
jc: Miało być (2) i (3), a nie tak, jak napisałem (1) i (2).
18 sty 21:03
Metis: U mnie też tak jest w wielu przypadkach.
Zależy od wykładowcy i tego jaki sposób zaliczenia przedstawi.
Ja wybrałem sobie tych pro− studenckich
18 sty 21:04
Metis: Dzięki
jc
Taka odpowiedź będzie wystarczająca?
18 sty 21:05
KKrzysiek: @Metis, też nie bardzo było w czym wybierać
18 sty 21:07
jc: Czy ja wiem? Informatycy mogą myśleć inaczej, choć Ci, których znam, powiedzieliby
pewnie to samo.
18 sty 21:11
Metis: Dzięki
18 sty 22:45