Pomysł na projekt dla początkującego.

0

Witam, szukam jakiegoś pomysłu na projekt z C. Podstawy mam, zrobiłem snake'a ale uważam to za mało ambitne. Macie może jakieś pomysły ? Konieczne jest użycie list dynamicznych, najlepiej drzew BST.

0

Program do obsługi bazy danych zapisanej w pliku tekstowym.

0

Dobrze, gdyby była jakaś grafika do tego tylko nie wiem dokladnie czego użyć odnosnie grafiki - jeszcze tego nie robilem.

0

@Blackboy: Jaka grafika? Mówisz o algorytmie w formie schematu blokowego?

0

Na github'ie masz kilka pomysłów z różnych kategorii.

0
amb00 napisał(a):

@Blackboy: Jaka grafika? Mówisz o algorytmie w formie schematu blokowego?

Miałem na myśli jakiś interfejs graficzny.

0

@Blackboy: Jedyne co mi przychodzi do głowy to GTK+ lub WinAPI. W C niezbyt często teraz się pisze programy z interfejsem graficznym.

0
amb00 napisał(a):

@Blackboy: Jedyne co mi przychodzi do głowy to GTK+ lub WinAPI. W C niezbyt często teraz się pisze programy z interfejsem graficznym.

Więc postawie na GTK+ podobno łatwiejsze dla nowicjusza może jeszcze jakieś pomysły na projekt ?

I pytanie, jak podłączyć plik jako baza danych, nigdy tego nie robiłem.

0

Nie musisz go jakoś specjalnie podłączyć do projektu. Wystarczy, że nauczysz się obsługi plików w C czyli FILE etc... no i czeka Cię nauka wskaźników, bo taki chociażby fopen zwraca wskaźnik. Warto wiedzieć jak to działa i co z tym później robić, ale jak znasz listy i drzewa to nie będzie to dla Ciebie problem.

No chyba, że mówimy o jakichś sqlach to nie wiem, bo do czegoś pisanego w C nigdy takiej bazy nie dopinałem.

0

@Blackboy: Jeśli nie wiesz jak to ogólnie ogarnąć, ale znasz C++, to zajrzyj do kodu jednego z moich programów: https://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/289753-kod_programu_na_zaliczenie Co prawda on używa gotowej implementacji tablicy dynamicznej, ale przedstawia jak przykładowo można zorganizować to wszystko.

0
amb00 napisał(a):

@Blackboy: Jeśli nie wiesz jak to ogólnie ogarnąć, ale znasz C++, to zajrzyj do kodu jednego z moich programów: https://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/289753-kod_programu_na_zaliczenie Co prawda on używa gotowej implementacji tablicy dynamicznej, ale przedstawia jak przykładowo można zorganizować to wszystko.

Dziś rano przeglądałem właśnie kod kory wysłałeś w linku, zaczynam działać w tym temacie. Już wiem jak podłączyć ten plik. Myślę że sobie poradzę, jak coś, będę pisał. Miłego dnia !

1

To może "system bazodanowy" typu klucz wartość.

  • Przy pomocy BST zaimplementujesz mapę (jak BST to za mało, to dodaj balansowanie drzewa w postaci drzewa czerwono czarnego albo zrandomizowanego - treap).
  • Zawartość drzewa będzie kopiowana do plików, które można odczytać podczas startu systemy aby zrekonstruować zawartość mapy.
  • Do tego api wystawione po sockecie tcp/udp (na początek udp dla prostoty, wszytko jednowątkowe, potem można to wzbogacić).
  • Proste komendy CRUD.
  • Można też stworzyć narzędzie do gadania z owym systemem z poziomu linii poleceń.

Taki strasznie uproszczony redis.

0
nalik napisał(a):

To może "system bazodanowy" typu klucz wartość.

  • Przy pomocy BST zaimplementujesz mapę (jak BST to za mało, to dodaj balansowanie drzewa w postaci drzewa czerwono czarnego albo zrandomizowanego - treap).
  • Zawartość drzewa będzie kopiowana do plików, które można odczytać podczas startu systemy aby zrekonstruować zawartość mapy.
  • Do tego api wystawione po sockecie tcp/udp (na początek udp dla prostoty, wszytko jednowątkowe, potem można to wzbogacić).
  • Proste komendy CRUD.
  • Można też stworzyć narzędzie do gadania z owym systemem z poziomu linii poleceń.

Taki strasznie uproszczony redis.

Niestety, jak dla mnie czarna magia

1
Blackboy napisał(a):
nalik napisał(a):

To może "system bazodanowy" typu klucz wartość.

  • Przy pomocy BST zaimplementujesz mapę (jak BST to za mało, to dodaj balansowanie drzewa w postaci drzewa czerwono czarnego albo zrandomizowanego - treap).
  • Zawartość drzewa będzie kopiowana do plików, które można odczytać podczas startu systemy aby zrekonstruować zawartość mapy.
  • Do tego api wystawione po sockecie tcp/udp (na początek udp dla prostoty, wszytko jednowątkowe, potem można to wzbogacić).
  • Proste komendy CRUD.
  • Można też stworzyć narzędzie do gadania z owym systemem z poziomu linii poleceń.

Taki strasznie uproszczony redis.

Niestety, jak dla mnie czarna magia

Wbrew pozorom nie jest to trudne. Z niektórych rzeczy można zrezygnować. Chętnie mogę rozwinąć zagadnienia jakbyś chciał.

0

@nalik Jeśli chodzi o zagadnienia których nie rozumiem moja odpowiedź to - wszystkich. Oprócz BST które widziałem raz na oczy. Więc rozwijanie tych wszystkich zagadnień byłoby bardzo czasochłonne, pytanie czy chciałbyś się aż tak poświęcić w imię mojego projektu ?

Mam jeszcze pytanko. Nie wychodzi mi funkcja usuwająca całą liste. dynamicznie. Co jest nie tak ?

void usun(ulm *first, int c){
    ulm *tmp = first;
while(tmp != NULL){
    first = (*tmp).next;
    free(tmp);
}
}
0

Nie działa, bo to kompletnie bez sensu.

Najpierw zwalniasz pamięć, potem sprawdzasz czy wskaźnik jest NULL (free() nie ustawia wskaźnika na NULL), a potem odwołujesz się do zwolnionego wcześniej wskaźnika (UB), aby przeczytać adres następnego elementu i wczytać go do first?

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