pascal velke pismena

Programovacie jazyky, rady, poradňa...
n0b0dy
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 nov 2006, 9:09
Bydlisko: Považská Bystrica
Kontaktovať používateľa:

pascal velke pismena

Príspevok od používateľa n0b0dy »

Zdravim, chcel by som sa spytat ci sa da v pascale zmenit prve pismeno kazdeho slova vo vete z maleho na velke bez toho aby sme pouzili polia .. dakujem :)
nbdy.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: pascal velke pismena

Príspevok od používateľa audiotrack »

jasné že dá, budeš s reťazcom pracovať ako s reťazcom (nie poľom), teda substr a copy
Sagittarius
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2883
Registrovaný: 13 feb 2007, 21:58
Bydlisko: Do nekonečna a ešte ďalej

Re: pascal velke pismena

Príspevok od používateľa Sagittarius »

Keď zoberieme do úvahy, že pre každom slovom musí byť medzera (okrem prvého), tak by stačilo niečo takéto:

Kód: Vybrať všetko

for i:=1 to s[0] do
begin
if(s[i] = '  ') then upcase(s[i+1]);
end;
s je reťazec.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: pascal velke pismena

Príspevok od používateľa BX »

i je od jedna po čo? :?:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: pascal velke pismena

Príspevok od používateľa audiotrack »

Sagittarius napísal:Keď zoberieme do úvahy, že pre každom slovom musí byť medzera (okrem prvého), tak by stačilo niečo takéto:

Kód: Vybrať všetko

for i:=1 to s[0] do
begin
if(s[i] = '  ') then upcase(s[i+1]);
end;
s je reťazec.
no veď a práve v takomto prípade tam používaš to pole (resp. s reťazcom pracuješ ako s poľom /odhliadnúc od faktu že to máš zle a nebude to fungovať/). To vyslovene nechce, ako vyplýva zo zadania. Bolo by to treba robiť asi štýlom:

Kód: Vybrať všetko

dlzka := length(s);
velke := false;
for i:=1 to dlzka do begin
    znak := copy(s,1,1);
    if(velke) then s := s + uppcase(z) else s := s + z;
    velke := (z = ' ');
    s := substr(s,1);
end;
za syntax neručím, je to už nejaký rok čo som pascal videl tak možno si nespomínam na presne poradie či typy parametrov tých funkcií
Sagittarius
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2883
Registrovaný: 13 feb 2007, 21:58
Bydlisko: Do nekonečna a ešte ďalej

Re: pascal velke pismena

Príspevok od používateľa Sagittarius »

No máš pravdu tie hodnoty v stringu (ako poli charov) sú len readonly, takže by som to mal spraviť inak. A v nultom indexe by v Pascale mala byť uložená dĺžka poľa, len neviem, či by som to nemal pretypovať. A k tomu zadaniu ja som to pochopil tak, že nemá použiť pole (ako array of ...) a to, že je reťazec pole znakov je už iná vec. Ale to by mal skôr on vedieť aké je zadanie, ale keďže verím, že tvoje riešenie je správne svoje už nemusím uvádzať. :)
n0b0dy
Light Expert
Light Expert
Príspevky: 45
Registrovaný: 16 nov 2006, 9:09
Bydlisko: Považská Bystrica
Kontaktovať používateľa:

Re: pascal velke pismena

Príspevok od používateľa n0b0dy »

ďakujem za všetky rady.. spravil som to nejako takto ale nechápem prečo mi to nejde ...

Kód: Vybrať všetko

program pismena;
var znak,s:string;velke:boolean;i,dlzka:integer;z:char;
begin
write('veta: ');
readln(s);
dlzka:= length(s);
velke:= false;
for i:=1 to dlzka do begin
znak:=copy(s,1,1);
if(velke) then s:= + upcase(z) else s:= s+z;
velke := (z= ' ');
s:= substr(s,1);
end;
writeln(s);
readln;
end.
ma problem s s:=substr(s,1); - unkown identifier
Sagittarius
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2883
Registrovaný: 13 feb 2007, 21:58
Bydlisko: Do nekonečna a ešte ďalej

Re: pascal velke pismena

Príspevok od používateľa Sagittarius »

Skús podľa tohto:
This procedure obtains a copy of part of str1. N is the length of the substring and position is the subscript where the substring starts. The substring that is obtained is copied into str2.

str1 := 'Hello there';
SubStr(str1,2,3,str2);
writeln(str2);
- - - - -
ll
Napísať odpoveď