Witam. Potrzebuje pomocy z programem. Musze stworzyc program który pobiera z pliku liczbe i przesuwa się w pliku o tyle liczb ile wynosi pobrana wczesniej liczba (np. jeślli liczba to 5 to o 5 liczb do przodu a jeśli -1 to o 1 do tyłu) i tak do dopóki nie natrafi na 0. Dodam, że liczby są jedna pod drugą. Pomożecie??
Pewnie, w czym masz problem?
Nie wiem jak ma to wyglądać, próbowałem to sam zrobić przy uzyciu funkcji fseek ale pobiera tylko pierwsza liczbe i nie pobiera juz liczb z kolejnych linii. Zatrzymuje się na pierwszej. Wiem ze mozna to zrobić z fseek i rewind ale nie wiem jak.
Wczytaj wszystkie do tablicy i skacz po tablicy.
A mógłbyś napisać jak to robić bo jestem jeszcze w tym całkowicie zielony?
Wczytaj wszystkie liczby w pętli wywołując fscanf
. Po każdym udanym odczycie dodawaj do tablicy - na chwilę obecną zainteresuj się malloc
i realloc
i załóż, że realloc
w pętli jest akceptowalnym rozwiązaniem.
TomekAtomek napisał(a):
A mógłbyś napisać jak to robić bo jestem jeszcze w tym całkowicie zielony?
No po co się porywasz z motyką na słońce? Naucz się jak pisać program typu hello world, wczytwyanie znaków itp. Potem dopiero rób to co opisujesz. Chyba, że jesteś kolejnym, który ma oddać zaliczenie i się obudził z nauką miesiąc przed? xD
A czy dałoby radę to zrobić bez tego tylko z operacją na pliku uzywając fseek i rewind?
Tak, ale to znacznie więcej roboty, bo masz liczby jako ciągi znaków, a nie liczby. Zresztą wtedy wygodniej by było raczej zmapować plik na pamięć...
W pliku jest 15 liczb i kursor w pliku przesuwa sie o tyle ile wynosi dana liczba. Konczy działanie gdy trafi na 0.
TomekAtomek napisał(a):
Witam. Potrzebuje pomocy z programem. Musze stworzyc program który pobiera z pliku liczbe i przesuwa się w pliku o tyle liczb ile wynosi pobrana wczesniej liczba (np. jeślli liczba to 5 to o 5 liczb do przodu a jeśli -1 to o 1 do tyłu) i tak do dopóki nie natrafi na 0. Dodam, że liczby są jedna pod drugą. Pomożecie??
Zwróć uwagę, że przesuwać się masz o ilość liczb, a nie ilość bajtów! Każda liczba może mieć różną długość (zakładając, że masz plik tekstowy), więc skakanie po pliku do konkretnej liczby jest bardzo trudne. Sam sobie utrudniasz zadanie.
Zapomnij o kursorze i zrób jak ci @kq pisał:
- wczytaj wszystkie liczby do tablicy o dynamicznej wielkości
- korzystając z tablicy wykonaj te skoki.
Można to zrobić skacząc po pliku (da się), ale jest to głupie rozwiązanie, bo zajmie ci 10 razy tyle kodu i będzie wolniejsze.
No chyba, że ten plik z danymi ma +5GB (wątpię).