Pořadí znaků – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pořadí znaků – Pascal – Fórum – Programujte.comPořadí znaků – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Synett
~ Anonymní uživatel
4 příspěvky
21. 12. 2010   #1
-
0
-

Ahoj, potřeboval bych pomoct s programem, který srovná znaky v řetězci tak, že budou nejdříve velká písmena, pak malá a nakonec číslice. Ostatní znaky se odstraní. Př.: 'sAjy5+kJy*r8' bude srovnáno:'AJsjkykyr58'. Děkuji za pomoc.

Nahlásit jako SPAM
IP: 77.48.104.–
Reklama
Reklama
Honzc0
Stálý člen
21. 12. 2010   #2
-
0
-

Zkus to takhle:
Nadefinuj si 3 proměnné - 1. pro velká písmena např vp, 2.malá písmena,3.pro číslice
Pak přečti vstup jako string.
Potom v cyklu od 1 do délky stringu čti znak po znaku (písmenko po písmenku)(např.text[i])
Když znak bude velké písmeno (text[i] in ['A'..'Z']) pak k proměnné vp přidej ten znak, tj vp := vp+text[i])
Obdobně to udělej pro malá písmena a pak i pro číslice.
Nakonec po projití cyklu budeš mít v proměnných vp - všechna velká za sebou v mp všechna malá za
sebou a pak v ci všechny číslice.
Jednotlivé proměnné pak jednoduše vypíšeš za sebou např. na obrazovku.

Nahlásit jako SPAM
IP: 93.181.78.–
Synett
~ Anonymní uživatel
4 příspěvky
21. 12. 2010   #3
-
0
-

To Honzc : Děkuji za radu, ale mohl bys mi to napsat ještě trochu podrobněji, jsem začátečník a neznám ještě všechny potřebné funkce pascalu.

Nahlásit jako SPAM
IP: 77.48.104.–
Jeyekomon0
Stálý člen
21. 12. 2010   #4
-
0
-

Vše, co k tomu potřebuješ, je vlastně jen umět načíst znak, zjistit (pomocí funkce ord), jestli jeho ordinální hodnota odpovídá např. malým písmenům, někde si ten znak uložit a pak jej zase vypsat.
A to vše v cyklu.

Kterou "advanced" funkci Pascalu jsi měl na mysli? Já tam žádnou nevidím.. ;)

Nahlásit jako SPAM
IP: 89.24.76.–
jjk
Synett
~ Anonymní uživatel
4 příspěvky
21. 12. 2010   #5
-
0
-

To Jeyekomon : Neměl jsem na mysli, nějakou konkrétní funkci, spíš jako to, že umím v pascalu podmínky, cykly a trochu řetězce a pole, ale dělá mi problém to zakomponovat dohromady.

Nahlásit jako SPAM
IP: 77.48.104.–
KIIV+42
God of flame
21. 12. 2010   #6
-
0
-

synet a co pripojit do retezce jeden znak? umis?
co poznat jestli je znak malej/velkej/jinej? to uz ti tu napovedeli
co nadefinovat tri retezce?
podle toho jakej je znak pripojit do spravneho z nich
a pak vypsat tri retezce po sobe...

vic uz to snad ani zjednodusit nejde
a pokud to za tebe nekdo vyresi tak te vlastne jen podporuje v nepremejsleni

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jeyekomon0
Stálý člen
22. 12. 2010   #7
-
0
-

To Synett : No, ono samo programování nepůjde, tomu je třeba obětovat trochu času..
Zkus tomu věnovat jeden večer, popřemýšlet nad tím a zkusit něco napsat. Nemusí to být fungující program, stačí pár myšlenek přepsaných do jazyka Pascalu.
Skopíruj pak svůj výtvor sem a my ti už řeknem, co změnit / zlepšit / ..

Nahlásit jako SPAM
IP: 89.24.111.–
jjk
Synett
~ Anonymní uživatel
4 příspěvky
22. 12. 2010   #8
-
0
-

Tak všem díky za rady, už jsem to nějak vyřešil, tady dávám výpis, pokud si myslíte, že by šlo něco upravit, tak napište. Díky

uses

SysUtils;
var i,pocetznaku:integer;
vp:string;
mp:string;
ci:string;
text:string;


begin
writeln('Zadejte znaky: ');
readln(text);
pocetznaku:=length(text);
for i := 1 to pocetznaku do
if (text[i] in ['A'..'Z']) then vp:=vp+text[i]
else if (text[i] in ['a'..'z']) then mp:=mp+text[i]
else if (text[i] in ['1'..'9']) then ci:=ci+text[i];
writeln(vp,mp,ci);
readln;
end.

Nahlásit jako SPAM
IP: 77.48.104.–
Honzc0
Stálý člen
23. 12. 2010   #9
-
0
-

To Synnett
Skoro dobře. Ale je zbytečné do podmínky dávat else (i když to taky jde) a za další také 0 je číslice.
Tedy malá úprava:
for i := 1 to pocetznaku do
begin
if (text[i] in ['A'..'Z']) then vp:=vp+text[i];
if (text[i] in ['a'..'z']) then mp:=mp+text[i];
if (text[i] in ['0'..'9']) then ci:=ci+text[i];
end;

Nahlásit jako SPAM
IP: 93.181.78.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý