Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
ВнизПеревёрнутые буквы Найти похожие ветки
← →
Bpeguk © (2007-12-19 01:18) [0]Добрый вечер, помогите пожалуйста в следующем: у меня задание - Приклеить к строке ее же в перевернутом виде столько раз, сколько в ней согласных букв. Вот что я сделал, но ЭТО не работает как надо, запутался я:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const Sogl : array[1..17] of string = ("b","c","d","f","g","h","k","l","m","n","p","r","s","t","v","z","x");
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
j: integer;
k: integer;
sLine: string;
begin
k:=0;
sLine:=edit1.Text;
for i:=0 to Length(Edit1.Text) do begin
for j:=0 to Length(Sogl) do begin
if Edit1.Text[i]=Sogl[j] then
for k:=0 to Length(Edit1.Text) do begin
sLine:=memo1.lines.append(Edit1.Text[Length(Edit1.Text)-k]);
//sLine:=sLine+Edit1.Text[Length(Edit1.Text)-k];
end;
edit2.text:=sLine;
end;
end;
end;
end.
← →
Германн © (2007-12-19 01:22) [1]Во-первых. Почему все циклы начинаются с 0?
← →
Джо © (2007-12-19 01:48) [2]Приступы необъяснимой доброты...
function GetConsonantCount (S: string): Integer;
const
Consonants: set of Char = ["b","c","d","f","g","h","k","l","m","n","p","r","s","t","v","z","x"];
var
I: Integer;
begin
Result := 0;
S := LowerCase(S);
for I := 1 to Length(S) do
begin
if S[I] in Consonants then
Inc(Result)
end
end;
function BlaBlaBla (const S: string): string;
var
I,
ConsonantCount: Integer;
begin
ConsonantCount := GetConsonantCount(S);
for I := 0 to ConsonantCount do
Insert (S,Result,I*StrLen);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := BlaBlaBla(Edit1.Text)
end;
Это если как попроще и понаглядней, без оптимизации. Разбирайтесь.
← →
Германн © (2007-12-19 02:05) [3]
> Джо © (19.12.07 01:48) [2]
>
> Приступы необъяснимой доброты...
>
Вызванные тем самым о чём спрашивал Kerk?
← →
Джо © (2007-12-19 02:27) [4]> [3] Германн © (19.12.07 02:05)
>
> > Джо © (19.12.07 01:48) [2]
> >
> > Приступы необъяснимой доброты...
> >
>
> Вызванные тем самым о чём спрашивал Kerk?
Ну, зачем так сразу вот? :)
← →
Германн © (2007-12-19 02:45) [5]
> Ну, зачем так сразу вот? :)
>
Ну почему "так сразу". В той ветке к этому времени уже перешли к другим классам ОПП :)
Но ты всё-таки на досуге ещё раз прочитай сабж. Там ведь нужно ещё что-то как-то переворачивать. Что и как - не очень понятно, посему я ограничился в [1] указанием на очевидную ошибку в приведенном коде. А дальше пусть автор подключится к обсуждению.
← →
Bpeguk © (2007-12-19 02:59) [6]Огромное спасибо. У меня ошибка на линии: Insert (S,Result,I*StrLen); Not enough actual parameters , не понимаю :(
← →
Германн © (2007-12-19 03:16) [7]
> Bpeguk © (19.12.07 02:59) [6]
>
> Огромное спасибо. У меня ошибка на линии: Insert (S,Result,
> I*StrLen); Not enough actual parameters
У тебя ошибка не "на линии", а в мозгах. Какая ошибка, где, когда и в каком коде выдается?
А на [1] ответить не можешь? Религия не позволяет?
← →
Bpeguk © (2007-12-19 03:26) [8]Простите, незаметил этот комментарий. С 0 , потому, что я думал, что так правильно, видимо ошибался. Я прибываю в небольшем замешателстве, т.к. напроч запутался в том, что написал месяц назад при помощи книг и конспектов, и если честно то не до конца понимаю систему работы массивов и циклов.
← →
Bpeguk © (2007-12-19 03:28) [9]А ошибка:
[Error] Unit1.pas(52): Not enough actual parameters
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"
← →
Германн © (2007-12-19 03:41) [10]
> Bpeguk © (19.12.07 03:26) [8]
>
> Простите, незаметил этот комментарий. С 0 , потому, что
> я думал, что так правильно, видимо ошибался.
Ошибался.
> Bpeguk © (19.12.07 03:28) [9]
>
> А ошибка:
> [Error] Unit1.pas(52): Not enough actual parameters
>
А эта ошибка где возникает?
← →
Bpeguk © (2007-12-19 04:04) [11]Делфи выделяет красным "Insert (S,Result,I*StrLen)";
← →
Германн © (2007-12-19 04:08) [12]
> Bpeguk © (19.12.07 04:04) [11]
>
> Делфи выделяет красным "Insert (S,Result,I*StrLen)";
>
Ну а где? В каком месте кода?
Методов Insert в VCL есть более чем.
← →
Bpeguk © (2007-12-19 04:11) [13]А как можно найти точное местоположение ошибки?
← →
Германн © (2007-12-19 04:21) [14]
> Bpeguk © (19.12.07 04:11) [13]
>
> А как можно найти точное местоположение ошибки?
>
Достал.
Ну а там,где у тебя
> Делфи выделяет красным
это разве не точное месторасположение ошибки?
Я спрашивал про то, в какой процедуре, функции, методе находится эта строка, которая "выделяется красным". :(
На худой конец замени строкуInsert (S,Result,I*StrLen)
на строкуSystem.Insert (S,Result,I*StrLen)
и ложись спать.
← →
Bpeguk © (2007-12-19 04:40) [15]Метод Insert , в System , в функции BlaBlaBla :) Я попробывал System.Insert , ничего не выходит, таже проблема :(((
← →
Джо © (2007-12-19 04:57) [16]А, точно, про перевернутые-то я и забыл.
Ну, напиши еще функцию, переворачивающую строку, там будет кода от силы на 5 строк и добавь к существующему коду, он тривиален же ж.
Насчет [6] ничего сказать не могу, бог его знает, что у вас там с инсертом. Пойду спать наконец :)
← →
Джо © (2007-12-19 05:01) [17]А, блин, там не StrLen, а Length(S)+1, конечно. Эк меня заглючило и даже не могу вспомнить причину этого :)
П.С. Функцию, «переворачивающую» строку писать не буду не из вредности, а из псевдо-педагогических соображений :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.049 c