Walka z programem, pierwsze starcie.

0

Witam wszystkich,

jestem nowy na tym forum i chce zacząć na poważnie programować. Podstawy języka C znam bo miałem na kursie w 2 sem na studiach ale teraz zaczął nam się kurs, na którym mamy tylko lab. bez wykładu i na tym lab. dają nam zadania i musimy je robić. Do tej pory kupowałem programy ale uznałem że jest to beznadziejne wyjście i chce sie nauczyć programować zaczynając od programu który mam na za tydzień. 

Podpowiedzcie mi prosze jak mam sie zabrać za ten program, od czego mam zacząć, co w jaki sposób zrobić żeby później działało. Pierwszy problem jaki mi sie nasuwa na myśl to jak wczytać obraz do pamięci programu, zapewne trzeba umieścić dane w dynamicznie alokowanej tablicy tylko nie wiem jak to wszystko zrobić. Obraz jest w formacie .pgm. 

tu jest treść zadania http://mvlab.pl/jk/Obrazy_zad1.pdf

za wszelką pomoc dziękuje

0

zacznij od przeczytania tego: http://netpbm.sourceforge.net/doc/pgm.html
potem podziel problem na mniejsze kawałki i zacznij pisać jeden z tych kawałków.

0

Jeśli chodzi o obraz zapisany w pgm to wiem jak jest skonstruowany. Ja osobiście mam obraz który jest kodowany w P2. W tym przypadku kolejny wiersz to komentarz/tytuł obrazu następny to wymiary obrazu np: 200x500 gdzie 200 to szerokość a 500 wysokość a reszta to są liczby od 0 do 255 ułożone jak piksele w tym obrazie. Każda cyfra z tego zakresu przedstawia jakiś odcień szarości. Mój problem polaga na tym że nie wiem jak wczytać trzecią linijke a właściwie pokolei wartości w niej żeby zalokować dynamicznie tablice a póżniej te wszystkie wartości do tej tablicy tak żeby później dało sie wykonywać operacje na tej tablicy takie jak np: przestawienie tych wartości tak żeby na koniec otrzymać obraz odwrócony do góry nogami.

0

podaj przykład pliku.

0

np. plik angel z http://mvlab.pl/jk/obrazy/

0
ifstream file("c:\\path\\angel.pgm");
for(unsigned n=0;(n<2)&&(file);n+=(file.get()=='\n')) {}
unsigned width,height,scale;
file>>width>>height>>scale;
for(unsigned h=0;h<height;++h)
  {
   for(unsigned w=0;w<width;++h)
     {
      unsigned pixel=0;
      file>>pixel;
     }
  }
file.close();
0

Zapomniałem napisać że piszę w C a nie w C++ (w C++ dopiero w przyszłym semestrze) za co przepraszam.

0

no to FILE, fopen, fclose, fgetc i fscanf.

0

Wielkie dzięki, postaram się ogarnąć.

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