Wstaw 'X' w miejsce 'P'

Wstaw 'X' w miejsce 'P'
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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

Kopiuj
Przykładowy tekst

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

kod

Kopiuj

#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');}}


}


Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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

au7h
  • Rejestracja:ponad 11 lat
  • Ostatnio:około rok
  • Postów:215
1
Kopiuj
std::replace( someString.begin(), someString.end(), 'a', 'b');

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

edytowany 1x, ostatnio: au7h
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
0
au7h napisał(a):
Kopiuj
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');

au7h
  • Rejestracja:ponad 11 lat
  • Ostatnio:około rok
  • Postów:215
0

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

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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

Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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

au7h
To jak ty chcesz zamieniać znak w pliku nie zapisując go? :P
Patryk Wielgosz
chodzi mi, że jeśli zamienie na string, daną linijke, w miejsce P wstawie kropke , potem znowu trzeba zapisać wszystkie linijki od początku , pozniej jak chciałbym przesunąć sie, wcinsac W , wstawic literke P wiersz wyzej, znowu musze zamieniac na string i znowu od początku zapisywać wszystkie linijki i znowu od początku wszystko wyświetlać, jakbym używał tak pare razy WASD to by byl cholernie dlugi kod, chciałem np. gdy uzyje W uzyc ukulele.seekp() i w wierszu wyzej wstawic literke P , ukulele<<P, albo ukulele,put('P') nie wiem czy jasno sie wyrazilem
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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ć

edytowany 1x, ostatnio: Patryk Wielgosz
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:15 minut
1

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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
0
MarekR22 napisał(a):

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

Sorki, nie w temacie jestem , ?

BG
Zelent to bardzo popularny wśród uczniów/studentów youtuber "uczący" programowania w C++. Ma niewątpliwie talent do tłumaczenia - niestety często uczy złych rzeczy...
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:4 dni
  • Postów:289
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".

Zobacz pozostałe 2 komentarze
au7h
ta muzyka jest psychodeliczna
MarekR22
gość usunął filmiki z negatywnymi komentarzami
BG
a myślałem że merytorycznie odpowie na moje (i chyba Twoje?) uwagi ;)
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:4 dni
  • Postów:289
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

Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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 ?

BG
Jeśli chcesz poćwiczyć algorytmikę - np. SPOJ, projecteuler.
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:15 minut
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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 3x, ostatnio: MarekR22
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
0

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

BG
A do jakiejś książki zaglądałes ? na początek "Opus Magnum" Grębosza, "Programowanie, teoria i praktyka z wykorzystaniem C++" Stroustrupa lub "C++ Primer" Lippmana. Do tego coś o algorytmach i strukturach danych (zacznij od "Algorytmy, struktury danych i techniki programowania" Wróblewskiego, potem "Wprowadzenie do algorytmów" Cormena).
au7h
  • Rejestracja:ponad 11 lat
  • Ostatnio:około rok
  • Postów:215
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

edytowany 2x, ostatnio: au7h
Silv
Fajna zakładka.
au7h
dzięki tej rj'tce kradłem legalnie prąd z gniazdka telefonicznego :-D
Silv
Co to znaczy "kraść legalnie"?
Silv
Jeśli to samo, co "kraść", to ta zakładka nie jest fajna.
Patryk Wielgosz
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:68
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

edytowany 1x, ostatnio: Patryk Wielgosz
Zobacz pozostałe 3 komentarze
YooSy
@Patryk_Wielgosz Żeby dobrze spamiętać trzeba dużo pisać. Przykłady z dokumentacji przepisywać, a nie copy paste.
Przem Cio
można używać e-booków :P
PerlMonk
@Przem Cio: Spróbuj z PDFem zawierającym obrazki zeskanowanej książki.
Przem Cio
@PerlMonk: ale ja mówię o legalnych PDFach :)
PerlMonk
@Przem Cio: A ja o legalnych książkach ;)
Przem Cio
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 lata
  • Postów:32
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.