matematykaszkolna.pl
Lista Mariusz: http://wklej.org/id/2958759/ Co musielibyśmy zmienić w tej liście gdybyśmy chcieli dołożyć tablicę znakową Jak przepisać ten kod na Pascala
18 lis 12:24
jc: Kod w Pascalu znajdziesz w wielu książkach. Po co Ci listy? Chcesz się nauczyć, jak implementować struktury wskaźnikowe, to pisz sam lub patrz jak inni napisali. Chcesz korzystać, sięgnij po gotowe rozwiązania.
18 lis 12:46
Mariusz: "Kod w Pascalu..." Oj nie wiem czy znajdę "Patrz jak inni napisali ..." problem w tym że nie chcą pisać Większość funkcji znalazłem w sieci a resztę napisałem sam "Chcesz korzystać..." to gdzie te gotowe rozwiązania Nie znalazłem całej listy w sieci , szukałem funkcja po funkcji Na co mi się może przydać lista liczb całkowitych
18 lis 13:09
jc: Wirth, Algorytmy+ struktury danych=programy, rozdział 4 Paluszyński, Kurs informatyki ..., rozdział 14
18 lis 13:14
18 lis 13:37
Mariusz: Przypomniałbyś trochę o wskaźnikach w Pascalu Może udałoby się mi przełożyć to listę z C na Pascala W tej liście co mam chciałbym dołożyć tablicę znakową która byłaby polem kluczowym Po listach można by przejść do drzew czy grafów
18 lis 13:49
jc: Pascala używałem dawno i krótko. Wskaźników w Pascalu nie użyłem nigdy. Nie znam się na takich rzeczach.
18 lis 14:39
Dziadek Mróz: Nie używam Pascala bo składnia jest inna niż w innych (większości) językach
18 lis 16:28
Mariusz: Dziadek obserwuję tą modę na C ale na przykład łańcuchy czy jak kto woli tablice znakowe są kiepsko rozwiązane w C Funkcje takie jak scanf dobrze współpracują z liczbami ze znakami trochę gorzej a do tablic znakowych w ogóle się nie nadają W C++ stosunkowo niedawno to trochę poprawili pisząc klasę do obsługi łańcuchów W pliku nagłówkowym można by zdefinować makro i używać tablicy znakowej o stałym rozmiarze ale operacje na łańcuchach są lepiej pomyślane w Pascalu niż w C
18 lis 19:42
Dziadek Mróz: A gdzie tam, jeżeli umiejętnie się posłużysz kodem to napisy są spoko. Tylko C zmusza Cię do kontroli pamięci
18 lis 20:57
Dziadek Mróz: Ewentualnie napisz swoją bibliotekę definiującą łańcuch znakowy i wciśnij ją do gcc/include/ a następnie tylko #include <myString.h>
18 lis 21:18
jc: Mariusz, teraz w większości języków programowania nawet bardzo proste funkcje wyrzucone są poza język. W C koniec łańcucha znakowego oznaczony jest specjalnym znakiem (po prostu zerem), w Pascalu wraz łańcuchem przechowywana jest jego długość. Dla mnie składnia C jest czytelniejsza, a jeszcze czytelniejsza jest składnia pythona. Wiele języków przejęło składnie C: java, javascript, ... Pascal przejął składnie z algola. Wirth stworzył Pascala w celach dydaktycznych., więc i tak dobrze, że był używany szerzej (w Delphi napisano Skype). C powstał przy okazji pisania systemu operacyjnego unix na pdp−11. Był stworzony przez praktyków.
18 lis 22:33
Mariusz: Tak tylko łańcuchów nie porównasz operatorami to samo z kopiowaniem, scanf nie czyta poprawnie łańcuchów (nie czyta spacji) Ja chciałem właśnie łańcuch dodać do tej listy jako pole kluczowe
18 lis 22:46
jc: W C funkcja gets() wczytuje całą linię. W Pythonie możesz napisać warunek "kot"=="pies".
18 lis 23:00
Mariusz: Dziadek skoro łańcuchy są dobrze rozwiązane w C to jak wczytujesz dane np z pliku gdzie nie znasz długości linii
19 lis 13:00
Dziadek Mróz: Owszem, C nie zapewnia takiego rozwiązania, ale możesz użyć struktury Twojej listy jednokierunkowej i wstawiać znak za znakiem aż do końca linii a na końcu przenieść to do zmiennej char *. Bo tak działa klasa std::string w C++. #define SZ 1024 char linia[SZ]; FILE *plik = fopen("plik.txt", "r"); while (fgets(linia, sizeof(linia), plik)) { printf("%s %d\n", linia, strlen(linia)); }
19 lis 15:31
Dziadek Mróz: Albo idziesz naokoło, ale stracisz trochę pamięci: main: char *temp[1024] // 2048, ... ... while (fgets(temp, sizeof(temp), plik)) { char *str = (char *)malloc(strlen(temp) * sizeof(char)); ... }
19 lis 16:26
Mariusz: No i właśnie dlatego przydałoby się aby typem danych był void* bo raz potrzebujemy listy znakowej a później listy z łańcuchem i liczbą całkowitą jako licznik linii (jeśli chcemy wykorzystać listę do pracy z danymi zawartymi w pliku)
19 lis 23:36
Mariusz: W C++ jest to trochę lepiej rozwiązane ale dla starszych środowisk i tak trzeba by było własną klasę łańcucha napisać W C++ są szablony więc nie trzeba kombinować z void* W sieci nie widziałem dobrej listy , wszyscy na pokazach piszą dla liczb całkowitych poza tym kod trzeba było zbierać funkcja po funkcji
20 lis 16:36
jc: Mariusz, w bibliotece stl masz klasę list.
20 lis 21:12