Przekazywanie tablicy 2D między funkcjami

Przekazywanie tablicy 2D między funkcjami
M9
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
0

Cześć wszystkim,
Mam pytanie dotyczące przekazywania tablicy dwuwymiarowej między funkcjami.
Czy jest możliwość przekazania tablicy dwuwymiarowej typu char między funkcjami? I realizowanie w funkcjach pewnych operacji na niej?

Jeśli jest taka możliwość to proszę o jakieś wskazówki, jak to zrobić.
Z góry serdeczne dzięki, pozdrawiam i wesołych świąt życzę ;)

M9
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
0

No dobra, dzięki, przekazywanie tablicy 2D już działa.
Mam teraz problem z wczytywaniem zawartości pliku. Potrzebuję wczytywać z pliku linijkę po linijce i wykonywać operacje.
Przykładowy plik tekstowy:

dodaj 7
nic
odejmij 4
dodaj 3
nic
dodaj 2

No i zrobiłem strukturę składającą się z 2 pól, a mianowicie: komenda typu char[10] i liczba typu int.
I chcę wczytać linijkę po linijce.
Nie wiem jak wczytać ilość linijek, najpierw zrobiłem tak, że w pierwszej linii wpisałem ilość linijek w pliku i wtedy wczytuję od 0 do wczytanej liczby i jest dobrze. Ale muszę zrobić tak, żeby plik tekstowy wyglądał jak ten powyżej.
No i teraz drugi problem.
Wczytuję w pętli 2 wartości: typu tablicowego char i typu całkowitego.
Jak wczyta mi "nic" (nie ma nic robić) to potem coś wczytuje i już efekt programu jest tak, że w wyjściowym pliku tekstowym jest czysto. Najwidoczniej wczytując liczbę wczytuje już coś z kolejnej linii i jest problem. Jak to załatwić?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
1
Kopiuj
typedef void exec(long long &value);
int read() { int x; cin>>x; return x; }
void nic(long long &value) {}
void dodaj(long long &value) { value+=read(); }
void odejmij(long long &value) { value-=read(); }
bool doit(long long &value)
  {
   static struct { const char *txt; exec *doit; } Tb[]={{"nic",&nic},{"dodaj",&dodaj},{"odejmij",&odejmij}};
   static char buf[256];
   cin>>setw(255)>>buf;
   for(unsigned i=0;i<sizeof(Tb)/sizeof(*Tb);++i) if(!strcmp(buf,Tb[i].txt)) Tb[i].doit(value);
   return cin;
  }

http://ideone.com/IcQhIE


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon
M9
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
0

Okej dzięki.
Ale jeśli chciałbym dalej kontynuować swoim sposobem?
Zrobiłem tak, że jeśli wczyta "nic" to już wartości nie czyta tylko wykonuje funkcję i idzie dalej, jeśli nie wczyta "nic" to wczytuje nazwę komendy ("dodaj", "odejmij") i wartość.
Wczytuję wszystko za pomocą "cin". Chciałbym to wczytać za pomocą getline(), ale nie wiem z czym to się je. Wiem, że instrukcja ta wczytuje linijkę po linijce z pliku, ale jak potem powiedzmy rozdzielić tą linię i zapisać "dodaj, odejmij, nic" to zmiennej typu tablicowego char a wartość do zmiennej typu int?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
0

Dla tych którzy na wszystko mają swoi sposoby polecam jakiś kurs oraz google


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M9
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
0

Uporałem się z tym. Użyłem pętli iteracyjnej, w której użyłem getline i po prostu czytałem wartości jak poprzednio.Niby nic wielkiego, ale zawsze kilka linijek mniej.
Dziękuję za wszelką pomoc. Zdrowych i wesołych świąt życzę. Pozdrawiam.

edytowany 1x, ostatnio: maly93

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.