nbdy.
pascal velke pismena
-
n0b0dy
Light Expert
- Príspevky: 45
- Registrovaný: 16 nov 2006, 9:09
- Bydlisko: Považská Bystrica
- Kontaktovať používateľa:
pascal velke pismena
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.
nbdy.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal velke pismena
jasné že dá, budeš s reťazcom pracovať ako s reťazcom (nie poľom), teda substr a copy
-
Sagittarius
Guru
- Príspevky: 2883
- Registrovaný: 13 feb 2007, 21:58
- Bydlisko: Do nekonečna a ešte ďalej
Re: pascal velke pismena
Keď zoberieme do úvahy, že pre každom slovom musí byť medzera (okrem prvého), tak by stačilo niečo takéto:
s je reťazec.
Kód: Vybrať všetko
for i:=1 to s[0] do
begin
if(s[i] = ' ') then upcase(s[i+1]);
end;Re: pascal velke pismena
i je od jedna po čo? 
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal velke pismena
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: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:
s je reťazec.Kód: Vybrať všetko
for i:=1 to s[0] do begin if(s[i] = ' ') then upcase(s[i+1]); end;
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;-
Sagittarius
Guru
- Príspevky: 2883
- Registrovaný: 13 feb 2007, 21:58
- Bydlisko: Do nekonečna a ešte ďalej
Re: pascal velke pismena
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
- Príspevky: 45
- Registrovaný: 16 nov 2006, 9:09
- Bydlisko: Považská Bystrica
- Kontaktovať používateľa:
Re: pascal velke pismena
ďakujem za všetky rady.. spravil som to nejako takto ale nechápem prečo mi to nejde ...
ma problem s s:=substr(s,1); - unkown identifier
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.-
Sagittarius
Guru
- Príspevky: 2883
- Registrovaný: 13 feb 2007, 21:58
- Bydlisko: Do nekonečna a ešte ďalej
Re: pascal velke pismena
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