Przelicznik(wzory z pliku) C

0

potrzebuje napisac program ktory wyswietla 2 stopniowe menu. W 1 stopniu wybieramy typ jednostkek (np dlugosc albo temperatura), w 2 stopniu wybieramy 2 konkretne jednostki np (cm na dm). Problem mam w tym ze te typy jednostek i wzory maja byc zdefiniowane w pliku tekstowym, ponadto program musi byc podatny na modyfikacje tego pliku txt (dodanie nowych grup badz jednostek). Jedyne co mi przychodzi do glowy to ze trzeba uzyc tablicy dynamicznej gdyz nie znamy ilosci wersow w pliku (mozemy go modyfikowac), natomiast nie wiem jak uzyskac te wzory, co zrobic zeby wyswietlilo sie to menu zaleznie od ilosci grup/jednostek w pliku, jak wyciagnac wzory.

1

wygląd pliku:

Dlugość 0 0
m 1 0
cm 0.01 0
km 1000 0
Temteratura 0 0
Celsiusz 1 0
Farengejt 0.55556 -17.77778
  1. Przy każdym napisie masz dwie liczby A B
  2. Z dwoma zerami to grupy
  3. Z 1 0 - podstawowa jednostka w grupie
  4. Przeliczenie na podstawową V*A+B
  5. Przeliczenie z podstawowej (V-B)/A
0

Dzieki za odp, mam jeszcze jednak kilka watpliwosci :

  • Czy przeliczenie z Celsiuszy na Farenthaity mozna zapisac w postaci 5/9v + 32 (ax + b) ?
  • Wczytam sobie ten plik do tablicy ale co dalej ? Nie prosze o kod ale o jakas 'liste krokow', poniewaz nie bardzo rozumiem jak ma to dzialac.
    potrafie wykonywac operacje na napisach/plikach jednak nie wiem jakie warunki maja byc spelnione aby zaszla dana czynnosc
    np :
    Wczytalem plik do tablicy
    -Sprawdzam pierwszy wers (?) jezeli 2 i 3 kolumna to "0" to w pierwszej jest nazwa grupy (?)
  • jak teraz wybrac ta grupe ? a nastepnie poszczegolne jednostki ?
1

Ad 1. Czyli: - "Przeliczenie z podstawowej (V-B)/A" (v-(-17.77778))/0.55556 *** 17.77778 / 0.55556 = 32 ***
Ad.2. W menu pierwszego poziomu wyświetlasz tylko te napisy z 0 0. W meni drugiego poziomu wyświetlasz od wybranej grupy (wyłacznie) do następnej grupy (wyłacznie) lub do końca.

0

Dobra zaczynam czaic o co chodzi, ale nie obylo sie bez dalszych trudnosci troszeczke sie przeliczylem, Chcialem sprawdzic czy w wczytanym wierszu z pliku wystepuje "0 0" w taki sposob

 FILE *p;
char k[] = "0 0";
char tab[100];
p = fopen("plik.txt", "r");
fgets(tab,10,p);
if(strstr(tab,k))
printf("%s", tab);

 

No ale niestety nie pyklo, prosze o jakas podpowiedz.
Jak juz uda mi sie wyswietlic to menu, jak potem dokonac wyboru grupy/konkretnych jednostek.
Chcialbym zrobic tablice dynamiczna ale nie wiem w jaki sposob okreslic jej rozmiar, (jak okreslic ilosc tekstu w pliku ?)

1
struct Node { char Text[100]; double A,B; struct Node *next; } tmp;
struct List { struct Node *head,*tail; } Lst={NULL,NULL};
FILE *p=fopen("plik.txt","r");
while(fscanf(" %s %lf %lf",tmp.Text,&tmp.A,&tmp.B)==3) printf("%s %lf %lf",tmp.Text,tmp.A,tmp.B);

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