Pięć modułów do rozwiązania, z którymi mam problem -
Pięć modułów do rozwiązania, z którymi mam problem -
Mam problem z nastepującymi zadankami. Mam do napisania coś takiego:
1. Zdefiniuj funkcję UsunSpacjeBiale (ciąg), która usunie z jakiegoś ciągu spacje białe (usunie spacje boczne + zamieni większą ilość spacji pomiędzy wyrazami na jedną).
2. Zdefiniuj funkcje Kwadraty (ciąg), która wszystkie słowa w dowolnym ciągu umiesci w nawiasach kwadratowych.
3. Zdefiniuj funkcję Numeryczna (ciąg) sprawdzającą, czy podany ciąg jest wartością numeryczną - wynikiem powinna być wartość True lub False
4. Zdefiniuj funkcję Dodaj (ciąg1, ciąg2), ktorej wznikiem jest suma wartosci numerycznych reprezentowanych przez dwa ciagi lub 0 jesli jeden z nich nie reprezenutuje wartosci numerycznej.
5. Zdefiniuj funkcje Binarna (liczba), ktora dowolna, naturalna liczbe zamieni na jej postac binarna - funkcja musi uwzglednic wszystkie mozliwe wprowadzone dane, akceptowac w przypadku poprawnych - wyswietlac komunikat Zle dane w przypadku wprowadzeia liczby innej niz dodatnia.
Moglby mi ktos to rozwiazac. Bylbym bardzo wdzieczny. Jestem poczatkujacy. Probowalem sam do tego dojsc i nie moge. Prosze o pomoc. Za rozwiazanie DUZY PUNKT POMOCY
1. Zdefiniuj funkcję UsunSpacjeBiale (ciąg), która usunie z jakiegoś ciągu spacje białe (usunie spacje boczne + zamieni większą ilość spacji pomiędzy wyrazami na jedną).
2. Zdefiniuj funkcje Kwadraty (ciąg), która wszystkie słowa w dowolnym ciągu umiesci w nawiasach kwadratowych.
3. Zdefiniuj funkcję Numeryczna (ciąg) sprawdzającą, czy podany ciąg jest wartością numeryczną - wynikiem powinna być wartość True lub False
4. Zdefiniuj funkcję Dodaj (ciąg1, ciąg2), ktorej wznikiem jest suma wartosci numerycznych reprezentowanych przez dwa ciagi lub 0 jesli jeden z nich nie reprezenutuje wartosci numerycznej.
5. Zdefiniuj funkcje Binarna (liczba), ktora dowolna, naturalna liczbe zamieni na jej postac binarna - funkcja musi uwzglednic wszystkie mozliwe wprowadzone dane, akceptowac w przypadku poprawnych - wyswietlac komunikat Zle dane w przypadku wprowadzeia liczby innej niz dodatnia.
Moglby mi ktos to rozwiazac. Bylbym bardzo wdzieczny. Jestem poczatkujacy. Probowalem sam do tego dojsc i nie moge. Prosze o pomoc. Za rozwiazanie DUZY PUNKT POMOCY
- Sulik
- Użytkownik
- Posty: 161
- Rejestracja: 1 lis 2005, o 11:50
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 44 razy
Pięć modułów do rozwiązania, z którymi mam problem -
5.
Kod: Zaznacz cały
function Binarna(liczba: LongInt) : string;
var
s: string;
a, r : LongInt;
begin
if liczba < 0 then
begin
writeln('Zla');
Binarna := '';
exit;
end;
s := '';
a := liczba;
repeat
r := a mod 2;
if r=0 then
s:='0'+s
else
s:='1'+s;
a := a div 2;
until a=0;
Binarna := s;
end;
Pięć modułów do rozwiązania, z którymi mam problem -
Ok. Dzienx. Czekam na dalsze
[ Dodano: Sob Lis 26, 2005 3:43 pm ]
OK. Drugie i trzecie juz mam. Jeszcze zostało Pierwsze i czwarte. Pomoże ktoś?
[ Dodano: Sob Lis 26, 2005 3:43 pm ]
OK. Drugie i trzecie juz mam. Jeszcze zostało Pierwsze i czwarte. Pomoże ktoś?
- Sulik
- Użytkownik
- Posty: 161
- Rejestracja: 1 lis 2005, o 11:50
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 44 razy
Pięć modułów do rozwiązania, z którymi mam problem -
3.
[edit] Heh, trzeba było wcześniej, ja też mam
1.
[ Dodano: 26-11-2005, 15:27 ]
A czy funkcja 4 może korzystać z funkcji 3?
Kod: Zaznacz cały
function Kwadraty(ciag: string): string;
var
a,s : string;
i : Integer;
begin
if Length(ciag)>0 then
begin
if ciag[1]<>' ' then ciag := '['+ciag;
if ciag[length(ciag)]<>' ' then ciag := ciag+']';
s := '';
for i := 1 to Length(ciag)-1 do
begin
a := ciag[i];
if (ciag[i] =' ') and (ciag[i+1]<> ' ') then
a := ciag[i] + '[';
if (ciag[i]<>' ') and (ciag[i+1] = ' ') then
a := ciag[i] + ']';
s := s + a;
end;
s := s+ciag[Length(ciag)];
end else s := '';
Kwadraty := s;
end;
1.
Kod: Zaznacz cały
function UsunSpacjeBiale(ciag: string): string;
var
i : integer;
begin
i := 1;
while i <= Length(ciag)-1 do
if (ciag[i]=' ') and (ciag[i+1]=' ') then delete(ciag, i, 1) else i := i + 1;
if ciag[1]=' ' then delete(ciag, 1, 1);
if ciag[Length(ciag)]=' ' then delete(ciag, Length(ciag), 1);
UsunSpacjeBiale := ciag;
end;
A czy funkcja 4 może korzystać z funkcji 3?
Pięć modułów do rozwiązania, z którymi mam problem -
Może. Zadanie czwarte ponoć ma być na podstawie trzeciego. Zostało mi tylko to czwarte. Licze na pomoc.
Przepraszam. Poprawka. Do tego czwartego jeszcze zostały mi dwa moduły, a mianowicie:
6. Zdefiniuj funkcję Haslo, ktora wygeneruje haslo skladające się z 8 do 16 znaków, którymi moga być małe i duże litery, oraz cyfry.
7. Zdefiniuj funkcję totek, która wygeneruje sześć różnych liczb z przedziału 1..49.
To wszystko z zadań. Będę wdzięczny za rozwiązanie. Pozdrawiam.
Przepraszam. Poprawka. Do tego czwartego jeszcze zostały mi dwa moduły, a mianowicie:
6. Zdefiniuj funkcję Haslo, ktora wygeneruje haslo skladające się z 8 do 16 znaków, którymi moga być małe i duże litery, oraz cyfry.
7. Zdefiniuj funkcję totek, która wygeneruje sześć różnych liczb z przedziału 1..49.
To wszystko z zadań. Będę wdzięczny za rozwiązanie. Pozdrawiam.
- Sulik
- Użytkownik
- Posty: 161
- Rejestracja: 1 lis 2005, o 11:50
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 44 razy
Pięć modułów do rozwiązania, z którymi mam problem -
4. Można też rozwiązać bez dodatkowych funkcji (IntToStr i StrToInt), ale będzie dużo brzydziej i dłużej. Funkcja Dodaj wykorzysuje funkcję Numeryczna z pkt. 3.
[ Dodano: 26-11-2005, 20:16 ]
2 pytanka:
Czy długość Hasła (funkcja 6) ma być argumentem funkcji, czy losowana?
W jaki sposób ma być zwracana wartość przez funkcję totek?
Kod: Zaznacz cały
function IntToStr(liczba: Integer): string; {zamienia liczbe na ciag znakow}
var
s : string;
begin
str(liczba, s);
IntToStr := s;
end;
function StrToInt(ciag: string): Integer; {zamienia ciag znakow na liczbe}
var
n, err : Integer;
begin
val(ciag, n, err);
StrToInt := n;
end;
function Dodaj(ciag1, ciag2: string): string;
var
s1, s2: string;
r, i : Integer;
s : string;
begin
if (not Numeryczna(ciag1)) or (not Numeryczna(ciag2)) then
begin
Dodaj := '0';
exit;
end;
if Length(ciag1) > Length(ciag2) then {robi tak, by s1 byla dluzsza z liczb, a s2 krotsza}
begin
s1 := ciag1;
s2 := ciag2;
end else
begin
s1 := ciag2;
s2 := ciag1;
end;
while Length(s1) > Length(s2) do {uzupelnia krotsza liczbe zerami na poczatku}
s2 := '0' + s2;
s := '';
r := 0;
for i := Length(ciag1) downto 1 do
begin
s:=IntToStr(((r + StrToInt(s1[i])+StrToInt(s2[i])) mod 10))+s;
r:=(r + StrToInt(s1[i])+StrToInt(s2[i])) div 10;
end;
if r <> 0 then s := IntToStr(r)+s;
Dodaj := s;
end;
[ Dodano: 26-11-2005, 20:16 ]
2 pytanka:
Czy długość Hasła (funkcja 6) ma być argumentem funkcji, czy losowana?
W jaki sposób ma być zwracana wartość przez funkcję totek?
-
- Użytkownik
- Posty: 971
- Rejestracja: 27 wrz 2005, o 22:56
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 11 razy
- Pomógł: 75 razy
Pięć modułów do rozwiązania, z którymi mam problem -
Kod: Zaznacz cały
function haslo : string;
var c, len : integer;
s : string;
begin
s := '';
for len := random(9)+8 downto 1 do
begin
c := random(26+26+10);
if c < 26 then inc(c, ord('a'))
else if c < 26+26 then inc(c, ord('A') - 26)
else inc(c, ord('0') - (26+26));
s := s + char(c);
end;
haslo := s;
end;
- Sulik
- Użytkownik
- Posty: 161
- Rejestracja: 1 lis 2005, o 11:50
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 44 razy
Pięć modułów do rozwiązania, z którymi mam problem -
Kod: Zaznacz cały
function Haslo:string;
var
znaki: string;
s : string;
i, n : Integer;
begin
znaki:='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890';
n := Random(8)+9; {losuje liczbe od 9 do 16}
s := '';
for i:=1 to n do
s:= s + znaki[Random(Length(znaki))+1];
Haslo := s;
end;
Pięć modułów do rozwiązania, z którymi mam problem -
W zasadzie wszystko jest w tresci zadań, ale zrób jak uważasz. Najlepsza bedzie najprostsza metoda ;]
- Sulik
- Użytkownik
- Posty: 161
- Rejestracja: 1 lis 2005, o 11:50
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 44 razy
Pięć modułów do rozwiązania, z którymi mam problem -
To w takim razie wynik jest zwracany jako ciąg znaków - 6 liczb oddzielonych spacjami. I tak samo jak w hasło - należy wstawić Randomize na początku programu.
Kod: Zaznacz cały
function totek:string;
var
liczby: array[1..6] of integer;
i, j : Integer;
niepowt: Boolean;
a, s : string;
begin
for i := 1 to 6 do
repeat
liczby[i] := Random(49)+1;
niepowt := True; {zakladamy, ze wartosc nie wystapila wczesniej}
for j:=1 to i-1 do {sprawdzamy, czy nowowylosowana liczba nie wystapila juz wczesniej}
if liczby[j]=liczby[i] then niepowt := False;
until niepowt;
s:=';
for i:=1 to 6 do
begin
str(liczby[i], a);
s := s + a + ;
end;
totek := s;
end;
Pięć modułów do rozwiązania, z którymi mam problem -
dZIENX SERDECZNE. wSZYSTKO DZIAŁA. sZEGÓLNE PODZIĘKOWANIA DLA SULIKA ;]