Tablica dwuwymiarowa – odczyt z pliku

0

Witajcie
Mam do napisania program w którym to miałbym odczytywać dany plik txt za pomocą tablic dynamicznych rozmiar 24 na 7. Problem moj polega na tym że nie wiem jak odczytać te wartości. Jakby ktoś mógł mnie poprowadzić za rękę byłbym wdzięczny. Jeżeli chciałbym później odjąć jakąś stałą która zadeklaruje sam od tej tablicy dynamicznej to jak zapisać ją w tej samej strukturze w (pliku txt)?

0

1. Skoro rozmiar tablic wynosi 24 x 7 i jest, jak widać, znany i stały, to po co Ci tablice dynamiczne?
2. Ciężko poprowadzić Cię za rękę, ponieważ nie znamy formatu tego pliku, nie znamy sposobu w jaki wpisane są w niego treści/liczby, które chcesz odczytywać.
3. Co masz na myśli mówiąc "odjąć jakąś stałą"?

Najlepiej dla Ciebie i najłatwiej dla nas by było gdybyś wyszedł z czymś w naszą stronę. Najlepiej przykładem wejścia-wyjścia, malutkim fragmentem nawet pseudokodu, który pokazywałby co chcesz osiągnąć. Jeśli teraz chciałbym rzucić Ci jakimś kodem, to nawet nie mam jak, bo musiałbym zgadywać co rzeczywiście jest Ci potrzebne...

0

@Bartosz36:

  1. Takie mam polecenie. Chyba że zle je zrozumiałem.
*odczyta zawartość pliku tekst.txt (tablice dynamiczne - pierwsze dwie liczby określją jej rozmiar)
*od każdej wartości odejmie stałą X o wartości zadanej przez użytkownika
*zapisze zawartość do pliku o takiej samej strukturze

2.Format pliku to txt w którym znajdują się liczby. Plik txt.

24 7 - dwie pierwsze liczby
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0
0 1 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0
0 1 1 1 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0
0 1 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0
0 1 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

3.Napisane mam tyle.Dalej utknąłem w miejscu.

#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

void Wczytaj(string nazwa_pliku, int *val1, int *val2)
{
	ifstream dane;
	dane.open(nazwa_pliku.c_str());
	if(!dane.good())
	{
		cout << "Blad otwarcia";
		return;
	}
	// tutaj wpisujemy kod odczytu danych z pliku
	cout << "Wczytujemy dane" << endl;
	dane >> *val1 >> *val2;
	cout << "Dane wczytano" << endl;
	dane.close();
}


void Zapisz(string nazwa_pliku, int val1, int val2)
{
	ofstream dane;
	dane.open(nazwa_pliku.c_str());
	if(!dane.good())
	{
		cout << "Blad otwarcia";
		return;
	}
	// tutaj wpisujemy kod odczytu danych z pliku
	cout << "Zapisujemy dane" << endl;
	dane << val1 << " "<< val2;
	cout << "Zapisano" << endl;
	dane.close();
}


int main(void)
{	
	int dana1, dana2;
	Wczytaj("dane.txt", &dana1, &dana2);
	cout << "Dana1: " << dana1 << endl;
	cout << "Dana2: " << dana2 << endl;
	Zapisz("dane1.txt", dana1 - dana2, dana1 + dana2);
	cout << "No to konczymy" << endl;
	return 0;
}

0

https://dsp.krzaq.cc/post/448/n-wymiarowy-widok-na-macierz-w-cxx/
https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

Nie korzystasz z cstring więc po co on jest? Korzystasz natomiast z std::string, a odpowiedniego nagłówka nie zamieściłeś.

Zamiast metody good() lepiej używać fail() .

  1. Odczyta rozmiar tablicy z pliku i zadeklaruj ją tym rozmiarem. Zwróć ją z funkcji.
  2. Wypełnij tablicę danymi z pliku (osobna funkcja).
  3. Wykonaj obliczenia.
  4. Zapisz wyniki do pliku.
    Strumień plików zadeklaruj w funkcji głównej i przekazuje w argumentacji do funkcji.
0

@YooSy:

Odczyta rozmiar tablicy z pliku i zadeklaruj ją tym rozmiarem. Zwróć ją z funkcji.

Mogłbyś rozwinąć jak mam to dokładnie zrobić ?

0

Imo tak prościej:

void Zapisz(std::string nazwa_pliku, int val1, int val2)
{
    std::ofstream dane{nazwa_pliku};
    if (dane)
        dane << val1 << " " << val2;
}

Ale tak właściwie o co chodzi w poleceniu?
Najpierw odczytanie dwóch pierwszych liczb, stworzenie dynamicznej tablicy o rozmiarze tych dwóch liczb, a później ładowanie reszty danych z pliku do tej tablicy? (No i to odejmowanie, printowanie do pliku).

Jeśli tak to gdzie masz te tablice i co próbujesz osiągnąć zapisując val1 i val2 do pliku?

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