Dopiero się uczę. Czy mógłby ktoś mi to poprawić, bo nie potrafię. Chodzi o wypisanie koloru i ma się wyświetlić tekst czy to kolor podstawowy czy nie. Musi być funkcja “case”.
Program Kolory_podstawowe;
type
kolory=(niebieski,czerwony,zielony);
var
k:kolory;
begin
writeln ('Podaj kolor');
readln (k);
case k of
czerwony:writeln ('Kolor podstawowy');
niebieski:writeln ('Kolor podstawowy');
zielony:writeln ('Kolor podstawowy');
else writeln ('Kolor dodatkowy lub blad nazwy');
readln;
end
end.
Ten readln; ma być raczej po całej klauzuli case, teraz jest w środku bez podpiętego warunku.
Ne da się wczytać z klawiatury wartość typu enum.
Możesz wczytać napis a potem sprawdzać czy odpowiada jednemu z kolorów, a to oznacza że musisz trzymać tablicę z nazwami tych kolorów, po wprowadzeniu napisu przeszukać tą tablicę za pomocą pętli oraz porównywania, więc wniosek jest taki że case do tego zadania jest bezużyteczny.
Jedyne sensowne rozwiązanie (bez tablic) może być następujące:
program Kolory_podstawowe;uses typinfo;type kolory=(niebieski,czerwony,zielony);s:String;ok:Boolean;k:kolory;
Zadanie brzmi: Użytkownik podaje kolor. Program wskazuje czy należy do kolorów podstawowych. Użyta MUSI być funkcja case.
Miło by było jak bym sam doszedł ale mi nie kompiluje coś hm. Chodzi o to, żeby to było zrobione jak najprościej, bo mam dopiero 3 lekcje z tego na uczelni w niedziele i tak się dowiem jak to się piszę.
Można by pobierać pierwsze 9 (max niebieski) bo przecież sensem programu jest wyświetlenie wyniku tylko dla 3 kolorów , przy 64bitowym incie dałoby 7bitów czyli max 127, akurat tyle ile mają podstawowe znaki ascii ;]
Sądzę że podstawowych jest znacznie więcej, to tylko na wstępie autor tematu zrobił trzy kolory.
Zapomniałeś też o kolorze żółtym w którym jest trzy polskie litery, który owszem się mieszczą w podstawowych 127 znaków ale pod warunkiem odpowiedniego kodowania i tu zaczynają się schody
Jak by się uprzeć można by zrobić tablicę z 40? elementami w niej zapisać na sztywno znaki i przy podmianie nie zmieniać na kod ascii a na index tablicy :o
Z takim samym sukcesem możesz najpierw zidentyfikować kolor moją metodą potem do zmiennej wpisać Ord(k) lub -1 jeżeli nie znaleziono. A dalej porównywać w:
Czemu? Także w kodzie alien279 case można bez problemu zamienić na if…else i byłaby to chyba lepsza opcja, ale jeśli trzeba użyć instrukcji case to nic nie stoi na przeszkodzie żeby w pętli odczytać tylko indeks w tablicy kolorów i użyć w case
cayman3_11 , czyli (jeżeli dobrze rozumiem) informacje ze zmiennej ok (typu jest kolor/niema koloru) uzyskaną przez skanowanie tablicy lub nazw enum’a, proponujesz zamienić na indeks koloru lub zmienną typu enum aby potem za pomocą case
znowu sprowadzić informacje do postaci: jest kolor/niema koloru, dobrze rozumiem?
Gratuluje pomysłowości.
Tak przy okazji rozwijając twój pomysł można by też gdzieś w trakcie tego kodu zrobić kompresje danych zip/gzip/lh, zakodować to za pomocą steganografii do obrazku, wystawić go na jakiś wklej.to lub inny, potem ten obrazek wczytać łącząc się przez sokety, rozkodować i dopiero wyświetlić informacje czy to podstawowy kolor czy nie.
chyba jednak się nie rozumiemy. Po pierwsze musi być użyta instrukcja case…of. Gdyby nie to cały program sprowadzałby się do sprawdzenia czy wpisany przez użytkownika tekst to czerwony lub żółty lub niebieski. Jeśli tak wyświetl “kolor podstawowy”, w przeciwnym razie wyświetl “inny kolor lub błąd”. Ty uważasz jednak, że:
Heh chłopaki sprawdźcie Wikipedia i są 3 kolory podstawowe, a mi chodzi o jak najprostszy program z funkcją case no już bez motania kolorów np jasnoniebieski tylko np. jednowyrazowe, a nie takich: http://pl.wikipedia.org/wiki/Lista_kolor%C3%B3w chodź może jest jakaś funkcja hex :D?