Wstaw 'X' w miejsce 'P'

1

Cześć, napisałem program, który w pliku tekstowym ma zamieniac znak P na X, ale niestety, gdy tekst jest w jednej lini, to kod działa, jezeli natomiast napisze cos i dalej wcisne enter, to znak X jest wstawiany w niewlasciwe miejsce, prosze o pomoc

Przykładowy tekst

@##@#@#@**#*@#*#*#@
*@#**#@*#@*#*@#@*#*
*@#*@#@#*#*@#@*#*#*
*@#*P#*#@*#*@***#**
*@#*#@*@#@##@*#*###
*@#*@#*@*@*#@#*@#*#

kod


#include <iostream>
#include <cstdlib>
#include <time.h>
#include<fstream>
#include<math.h>
#include<sstream>


using namespace std;

int main()
{
    fstream ukulele;
     ukulele.open("dupa.txt",ios::in|ios::out);
     ukulele.seekg(0,ukulele.end);
        cout<< ukulele.tellg();

          ukulele.seekg(0);
        ukulele.seekp(0);
        ukulele.clear();
        char znak;
        while(!ukulele.eof())
        {
            ukulele.get(znak);

             if(znak=='P')
             {   cout<<znak;
                 cout<<" "<<ukulele.tellg();
                 int pokaz;
                 pokaz=ukulele.tellg()  ;
                 ukulele.seekp(pokaz-1);

                 ukulele.put('X');}}


}


0
Shalom napisał(a):

o_O http://www.cplusplus.com/reference/string/string/replace/

Nie chce zamieniac pliku do odczytu/zapisu na string, chce w tym pliku zamienic znaki

1
std::replace( someString.begin(), someString.end(), 'a', 'b');

takie coś zamienia WSZYSTKIE wystąpienia a na b w stringu someString

0
au7h napisał(a):
std::replace( someString.begin(), someString.end(), 'a', 'b');

takie coś zamienia WSZYSTKIE wystąpienia a na b w stringu someString

tak, ale chce w pliku zmienic, nie moge przeciez zrobic replace( ukulele.begin(), ukulele.end(), 'P', 'X');

0

Ale z pliku możesz pobrać linijkę i wczytać ją do string'a

0

Ale jest ku temu jakiś powód? Takie masz polecenie? Bo to co robisz jest pewnie z 1000 razy wolniejsze i zupełnie nieczytelne.

0
Shalom napisał(a):

Ale jest ku temu jakiś powód? Takie masz polecenie? Bo to co robisz jest pewnie z 1000 razy wolniejsze i zupełnie nieczytelne.

Robię zadania 2 i 3, już z 2 mam wygenerowany tekst i teraz próbuje znaleźć sposób, żeby znaleźć pozycje P w pliku, w to miejsce wstawić kropke i potem ogarnąć jakoś przesuwanie się za pomocą WASD , a nie chciałbym za każdym razem plik tekstowy zamieniac na string , znowu go zapisywac na nowo w pliku za kazdym razem , żeby wyswietlic nową pozycję literki P

0
au7h napisał(a):

Ale z pliku możesz pobrać linijkę i wczytać ją do string'a

Robię zadania 2 i 3, już z 2 mam wygenerowany tekst i teraz próbuje znaleźć sposób, żeby znaleźć pozycje P w pliku, w to miejsce wstawić kropke i potem ogarnąć jakoś przesuwanie się za pomocą WASD , a nie chciałbym za każdym razem plik tekstowy zamieniac na string , znowu go zapisywac na nowo w pliku za kazdym razem , żeby wyswietlic nową pozycję literki P
https://www.youtube.com/watch[...]FA5fB8MfPXWDQ1Fy&index=45

0
au7h napisał(a):

Ale z pliku możesz pobrać linijkę i wczytać ją do string'a

Albo inaczej, jaki miałbys pomysł na zrobienie zadania 3 z linku ponizej, krok po kroku co bym musiał zrobić

1

Offtopic: Pierwszy raz widzę te filmiki i obawiam się, że to następca/uczeń Zelenta.

0
MarekR22 napisał(a):

Offtopic: Pierwszy raz widzę te filmiki i obawiam się, że to następca/uczeń Zelenta.

Sorki, nie w temacie jestem , ?

1

@MarekR22:, możesz mieć rację ;)
Aż z ciekawości zobaczę wcześniejsze (gdzie podobno są rozwiązania...).

Jakbym miał coś takiego robić - zmapowałbym ten plik do pamięci i przestał się nim w ogóle przejmować. Tyle że bez jakiejś dodatkowej biblioteki (boost/Poco/...) nie da się tego zrobić "crossplatformowo".

0

Nie oglądaj tych filmów...

W lekcji 12 ten człowiek twierdzi, że jest programistą i nauczycielem, ale...
Jest taka miara jakości kodu - "liczba ojapierdolę na minutę" - nie pamiętam już czegoś tak wyjątkowego jak filmik podlinkowany przez @MarekR22

http://reviewthecode.blogspot.com/2016/01/wtf-per-minute-actual-measurement-for.html

0
Bartłomiej Golenko napisał(a):

Nie oglądaj tych filmów...

W lekcji 12 ten człowiek twierdzi, że jest programistą i nauczycielem, ale...
Jest taka miara jakości kodu - "liczba ojapierdolę na minutę" - nie pamiętam już czegoś tak wyjątkowego jak filmik podlinkowany przez @MarekR22

http://reviewthecode.blogspot.com/2016/01/wtf-per-minute-actual-measurement-for.ht

No , spoko, to może ty byś mi polecił jakiś zamiennik ?

2

Jak już się umie to i owo to się nie potrzebuje takich filmików, tylko troszkę bardziej zaawansowanych, więc się ich nie szuka.
Najgorsze jest to, że jak szukam czegoś zaawansowanego, to muszę przekopać się przez tonę śmieci by znaleźć coś wartościowego.
Na szczęście mam już dostateczną wiedzę by odróżnić crap od wartościowych rzeczy.

Dlatego ciężko mi z czystym sumieniem rekomendować coś dla początkujących.
Z tego co mi przychodzi do głowy, to te blogi
https://gynvael.coldwind.pl/
https://dsp.krzaq.cc/

Są prowadzone przez ludzi, których jestem pewien, że wiedzą o czym piszą i mówią.
Z tego co mi wiadomo mają troszkę artykułów i filmików dla początkujących.

0

Szukam czegoś co by mnie odpowiednio przygotowało pod kątem matury/studiów, zarówno z wiedzy , jak i ćwiczeń

0

Nie ma lepszej książki niż ta którą napisał Bjarne Stroustrup
Najlepiej w wersji angielskiej. Ja jestem leniem, ale w wolnych chwilach czytam. Oczywiście na "nielegalu" bo mam ksero, ale co tam :P
zzzzz.png

0
au7h napisał(a):

Nie ma lepszej książki niż ta którą napisał Bjarne Stroustrup
Najlepiej w wersji angielskiej. Ja jestem leniem, ale w wolnych chwilach czytam. Oczywiście na "nielegalu" bo mam ksero, ale co tam :P
zzzzz.png

pff.. co tam jakiś twórca c++ może wiedzieć o programowaniu w c++ :P

0

Tak jak napisano tu wyżej - warto poczytać najpierw coś porządnego, a nie rzucić się na filmiki z YT. Autor posta dowiedziałby się, że pliki są takim samym strumieniem I/O jak inne źródła danych i że należy nie komplikować prostych rzeczy - w tym przypadku znanych rozwiązań prostych problemów.

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