Kezdőoldal » Számítástechnika » Programozás » Hogyan kell a következő...

Hogyan kell a következő feladatot megoldani Pascalban?

Figyelt kérdés

Kérjen be egy szöveget és egy színt! A bekért szöveget írassa ki a bekért színnel!


Tudom, hogy csak féle angol színt tudok megadni, viszont a Free Pascal program csak számkódokkal fogadná el, úgy, ahogy én próbáltam. Tehát azt mondja, hogy a változót byte-ban deklaráljam, ne stringben...


Esetleg valaki le tudná nekem írni ezt a kis programot, úgy, hogy angol színt keljen beírni? Előre is köszönöm! :)


2015. júl. 18. 16:37
1 2
 1/12 anonim ***** válasza:
HA szo = "red" AKKOR szin := 4;
2015. júl. 18. 16:46
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:
de ez tűnik túl általánosnak... ekkor feltételes elágazásokat kéne csinálni, nem? én ezt elkerülném, ha lehet...
2015. júl. 18. 16:48
 3/12 A kérdező kommentje:
*nem tűnik
2015. júl. 18. 16:49
 4/12 anonim ***** válasza:

Tudtommal 16 szín van összesen, és tudtommal nem tartalmazzák az angol nevüket String-ként és nem is iterálhatók -> ezért manuálisan kötném össze őket. Igaz, rég Pascal-oztam már.


De mondjuk ezt megpróbálhatod:

[link]


"pascal color from string" keresésre jött ki.


(Mondjuk nem gondolom, hogy egy beépített függvény meghívásából állna a feladat, de ez már csak vélemény.)

2015. júl. 18. 17:04
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:

Esetleg deklarálhatsz egy rekordokból álló tömböt, amely elemei egy string és egy byte. Ebben előre létrehozol egy listát, hogy melyik szöveghez melyik szám tartozik, majd amikor beírnak egy színt, egy keresési algoritmussal kikeresed, hogy a tömbben hányadik rekordnak az első eleme. Majd pedig veszed annak a rekordnak a második elemét.

Ez általános megoldás, hogy aztán ez egyszerűbb, vagy pár elágazás, annak eldöntését már rád bízom. ;-)

2015. júl. 18. 17:04
Hasznos számodra ez a válasz?
 6/12 SimkoL ***** válasza:

Nagyon puritán módon egy függvény, nem szép, de érthető:


program Project1;


{$mode objfpc}{$H+}


uses

Classes, Crt;


function szin (color : string) : byte;

begin

Result := 15;

case LowerCase(color) of

'black' : Result := 0;

'blue' : Result := 1;

'green' : Result := 2;

'cyan' : Result := 3;

'red' : Result := 4;

'magenta' : Result := 5;

'brown' : Result := 6;

'ligthgray' : Result := 7;

'darkgray' : Result := 8;

'lightblue' : Result := 9;

'lightgreen' : Result := 10;

'lightcyan' : Result := 11;

'lightred' : Result := 12;

'lightmagenta' : Result := 13;

'yellow' : Result := 14;

'white' : Result := 15;

end;

end;


var myColor : string;


begin

Readln(myColor);

TextColor(szin(myColor));

WriteLn(myColor);

ReadLn;

end.

2015. júl. 18. 18:30
Hasznos számodra ez a válasz?
 7/12 tabaki ***** válasza:
Esetleg csinálhatsz egy stringtömböt a színek nevével, és s stringek közt megtalált név indexe lesz a szín számértéke.
2015. júl. 18. 19:49
Hasznos számodra ez a válasz?
 8/12 tabaki ***** válasza:

Ilyesmire gondoltam, mint lentebb. Kissé fáradt vagyok, gondolom, frappánsabban is meg lehetett volna írni.

A nev[] tömb utolsó kérdőjele nem játszik, és valószínűleg fölösleges, de nem látom át pontosan, hogy nem vezethet-e néha túlcsorduláshoz, ha kevesebb a tömbelemek száma, mint a szinkod() függvény ciklusváltozójának maximális értéke, gondoltam, jobb a békesség.


program szinkod;

uses Crt;


var

szin : byte;

szo : string;

nev : array[1..17] of string[12] = (

'black','blue','green','cyan','red','magenta','brown','lightgray','darkgray',

'lightblue','lightgreen','lightcyan','lightred','lightmagenta','yellow','white',

'?'

);


function szinkod(sz : string): byte;

var i : byte;

begin

        i := 0;

        repeat

                Inc(i);

        until (i > 16) or (nev[i] = sz);

        szinkod := i - 1;

end;


BEGIN

ClrScr;

WriteLn('Színszínező');

repeat

        TextBackground(Black); TextColor(White);

        WriteLn; Write('Írd be a szín angol nevét: ');

        ReadLn(szo);

        szin := szinkod(LowerCase(szo));

        if szin > 15 then

                begin

                TextBackground(LightRed); TextColor( White);

                Write('Nincs ilyen szín a készletben: ');

                end

        else

                begin

                if (szin = Black) or (szin = DarkGray) then TextBackground(LightGray);

                TextColor(szin);

                end;

        WriteLn(szo);

until szin >15;

TextBackground(Black); TextColor( LightGray);

WriteLn; Write('Enter leütésére vége.'); ReadLn;

END.

2015. júl. 19. 00:36
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:

Itt az én megoldásom, gondoltam hogy keresek egy másik megoldást, mint a fentebbiek, mármint hogy én is tanuljak, kipróbáljak valamit, amit még eddig nem használtam.


A lowercase ebben az esetben nem kell, azért hagytam ki, case-insensitive a keresés ami végrehajtódik.


Nem tudom hogy a feladat lényege a saját függvény írása volt -e avagy bármi más, amin gondolkodni lehet, amennyiben csak függvénnyel való megoldás a cél, akkor nem releváns a megoldásom...


Program Szin_kiiratas;

uses Classes,Sysutils,crt,strutils;

var

szo : string;

szkod : Integer;

sznevek : TStringList;

begin

sznevek := TStringList.Create;

sznevek.add('Black'); sznevek.add('Blue'); sznevek.add('Green'); sznevek.add('Cian'); sznevek.add('Red'); sznevek.add('Magenta'); sznevek.add('Brown'); sznevek.add('White'); sznevek.add('Grey'); sznevek.add('Light Blue'); sznevek.add('Light Green'); sznevek.add('Light Cian'); sznevek.add('Light Red'); sznevek.add('Light Magenta'); sznevek.add('Yellow'); sznevek.add('High-intensity white');

ClrScr;

TextBackGround (Black);

TextColor (White);

Repeat

WriteLn;

Write('Kérem a szín nevét : ');

ReadLn(szo);

szkod := sznevek.IndexOf (szo);

if (szkod = -1) then WriteLn('Ilyen nevű szín nincs a készletben!');

Until(szkod > -1) and (szkod <=15);

TextColor(szkod);

writeln(szo);

writeln('Enter: vége');

sznevek.free;

ReadLn;

end.

2015. júl. 20. 07:03
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

Olyan szinten a feladatra koncentráltam, hogy kihagytam a kiírandó szöveget. :-)

Itt van javítva.


Program Szin_kiiratas;

uses Classes,Sysutils,crt,strutils;

var

szo, sznev : string;

szkod : Integer;

sznevek : TStringList;

begin

sznevek := TStringList.Create;

sznevek.add('Black'); sznevek.add('Blue'); sznevek.add('Green'); sznevek.add('Cian'); sznevek.add('Red'); sznevek.add('Magenta'); sznevek.add('Brown'); sznevek.add('White'); sznevek.add('Grey'); sznevek.add('Light Blue'); sznevek.add('Light Green'); sznevek.add('Light Cian'); sznevek.add('Light Red'); sznevek.add('Light Magenta'); sznevek.add('Yellow'); sznevek.add('High-intensity white');

ClrScr;

TextBackGround (Black);

TextColor (White);

write('Kérem a kiírandó szöveget : ');

readln(szo);

Repeat

WriteLn;

Write('Kérem a szín nevét : ');

ReadLn(sznev);

szkod := sznevek.IndexOf (sznev);

if (szkod = -1) then WriteLn('Ilyen nevű szín nincs a készletben!');

Until(szkod > -1) and (szkod <=15);

TextColor(szkod);

writeln(szo);

writeln('Enter: vége');

sznevek.free;

ReadLn;

end.

2015. júl. 20. 08:14
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!