Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
Время: 1.477 c
11-1182631081
=BuckLr=
2007-06-24 00:38
2008.01.20
Вопрос по версии библиотеки Рич


2-1197961937
Alex_C
2007-12-18 10:12
2008.01.20
Двумерный открытый массив как параметр ф-ции


2-1197922608
istok
2007-12-17 23:16
2008.01.20
Overflow ...


2-1198221288
zdm77
2007-12-21 10:14
2008.01.20
имя вызывающего меню контрола


15-1197282248
em240
2007-12-10 13:24
2008.01.20
На чём написана Delphi?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский