• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ zadania na plikach

Object Storage Arubacloud
0 głosów
1,430 wizyt
pytanie zadane 24 lutego 2019 w C i C++ przez krisu Nowicjusz (180 p.)
Witam, od paru dni utknąłem na tych zadaniach i nie mam pojecia jak sie za to zabrać.
Będe bardzo wdzięczny za pomoc

1) Otwórz plik 2.txt i wypisz na ekran znaki znajdujące się na parzystej pozycji.

2)  Otwórz plik 3.txt, utwórz plik bufor.txt i korzystając z metod .read() / write() oraz 3 znakowego bufora przenieś jego zawartość tak aby w każdej linii pliku bufor.txt znajdowały się 3 znaki.

3)  Otwórz plik 4.txt, utwórz plik reversed.txt i zapisz do niego zawartość pliku 4.txt w odwrotnej kolejności.
1
komentarz 24 lutego 2019 przez Hiskiel Pasjonat (22,830 p.)
A my jesteśmy wróżkami i znamy zawartości plików i wiemy z czym masz problem.
komentarz 24 lutego 2019 przez niezalogowany
Zawartość plików jest najmniej potrzebna. Nie dajemy gotowców. Zadania są banalnie proste.
komentarz 24 lutego 2019 przez krisu Nowicjusz (180 p.)
Dla mnie nie sa banalnie proste...
Nie musicie dawac gotowców, ale aktualnie nie daliscie nawet dobrej rady.
W zadaniu 1) plik: G8o1ofd6 3jdoBb3
niby wszystko działa dobrze ale nie czyta mi spacji jako znaku tylko przeskakuje dalej.
zadanie 2) plik: 001010100
zadanie 3) plik: Aivot avaavat ovia
Nie wiem jak sie za to zabrac.
komentarz 24 lutego 2019 przez Piotr Płatos Bywalec (2,380 p.)
Może wklej tu swój kod. Wtedy zobaczymy co robisz nie tak.
komentarz 24 lutego 2019 przez krisu Nowicjusz (180 p.)
#include<iostream>
#include<fstream>

using namespace std;

int main()
{
	int a, b;
	ifstream odczyt("2.txt");

	if(odczyt.is_open())
	{
		char znak;
		odczyt.seekg( 1, ios::beg );
		while(odczyt>>znak) 
		{

			odczyt.seekg( + 1, std::ios::cur );

		cout<<znak;
		}
	}

	else
		cout<<"Nie udało się otworzyć pliku";

	cin.get();

	return 0;
}

do zadania 1

2 odpowiedzi

0 głosów
odpowiedź 24 lutego 2019 przez Piotr Płatos Bywalec (2,380 p.)
Tym sposobem białe znaki są ignorowane. Musisz użyć innej metody odczytywania plików, na przykład getline().
komentarz 24 lutego 2019 przez krisu Nowicjusz (180 p.)
A jestes w stanie pomoc w zadaniu 2? Nie wiem jak ustawic ten bufor zeby pobierał 3 znaki.
0 głosów
odpowiedź 24 lutego 2019 przez draghan VIP (106,230 p.)

Odnośnie zadania drugiego:

Sprawdźmy najpierw w dokumentacji te funkcje, które są wymienione w poleceniu.

read() oczekuje jako parametry dostać wskaźnik na miejsce, gdzie ma zapisać znaki oraz liczbę określającą ile tych znaków wyjąć - tutaj podamy ten mądrze brzmiący "bufor".

write() - oczekuje takiego samego zestawu argumentów.

Stwórzmy więc taki bufor. Wiemy, że ma to być trzyznakowy bufor. Wiemy (z dokumentacji), że zarówno read() jak i write() chcą mieć bufor typu char*. Zatem za bufor może posłużyć zwykła statyczna tablica trzyelementowa typu char:

char bufor[3];

Zakładam, że posiadasz dwa poprawnie otwarte strumienie do plików, jeden do odczytu pliku "3.txt", drugi do zapisu do "bufor.txt".

Wykorzystanie bufora do przerzucenia z jednego pliku do drugiego, będzie wyglądało tak:

file_3_txt.read(bufor, 3); // spróbuj wyjąć ze strumienia 3 znaki i umieścić w buforze
file_bufor_txt.write(bufor, 3); // wpisz 3 znaki z bufora do strumienia... tylko pytanie: czy zawsze będą to trzy znaki?

Musisz też pamiętać, że po każdych trzech znakach przeniesionych z jednego pliku do drugiego, autor polecenia chciał mieć umieszczony znak nowej linii w pliku "bufor.txt", co można zrobić np. tak:

file_bufor_txt.put('\n');

Pokazałem Ci, w jaki sposób przenieść jedną "partię" danych. Do Ciebie należy połączenie tego w działający program, który zadba o to, żeby przenieść wszystkie dane. Żeby dowiedzieć się, czy wszystkie dane zostały wyjęte ze strumienia, przydatna może być funkcja gcount.

Jeśli będziesz miał z tym problemy, pisz. :)

Podobne pytania

0 głosów
2 odpowiedzi 125 wizyt
pytanie zadane 24 lutego 2020 w C i C++ przez KopfSzmercen Bywalec (2,870 p.)
0 głosów
0 odpowiedzi 311 wizyt
pytanie zadane 8 grudnia 2018 w C i C++ przez matiibal Użytkownik (620 p.)
0 głosów
1 odpowiedź 121 wizyt

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...