Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 44
1

Добавить в начало и в конец строки минимально возможное одинаковое количество букв A, чтобы ее длина стала как минимум в 2 раза больше

09.01.2010, 23:56. Показов 2596. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вводится строка. Добавить ей в начало и в конец минимально возможное одинаковое количество букв A, чтобы ее длина стала как минимум в 2 раза больше.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var s:string;
    i:integer;
    n:extended;
begin
 s:=Edit1.Text;
 i:=length(s);
 n:=0;
 n:=i mod 2;
  begin
if n<>0 then
n:=n+1
  end;
while n>0 do
 begin
  Insert ('a',s,i+1);
  dec(n);
 end;
Label3.Caption:=s;
end;
end.
Выдаёт такую ошибку:
[Error] Unit1.pas(69): Left side cannot be assigned to
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'

Может кто подсказать, в чём дело?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2010, 23:56
Ответы с готовыми решениями:

Добавить лишние «пробелы» между словами так, чтобы длина строки стала кратна 60
Текст некоторой строки вводится в режиме диалога и содержит простое предложение, в котором слова...

Вставить между символами строки такое количество пробелов, чтобы ее длина стала равна Q
Дана строка из N символов разделенных пробелами. Строка имеет длину Z. С клавиатуры задается ее...

если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "."
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина...

Вычеркнуть минимально возможное количество чисел так, чтобы оставшиеся шли в порядке возрастания
Дана последовательность из целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть...

11
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ
607 / 387 / 81
Регистрация: 15.12.2009
Сообщений: 753
09.01.2010, 23:58 2
На какую строку ругается???
1
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 44
10.01.2010, 00:01  [ТС] 3
dec(n); Эту красной полосой выделяет.
0
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
10.01.2010, 00:08 4
i := i - 1;

Добавлено через 38 секунд
Извиняюсь, переменную перепутал:
Delphi
1
  n := n - 1;
1
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 44
10.01.2010, 00:11  [ТС] 5
Всё спасибо, помогло. Чего-то я забыл про такой способ
0
ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ
607 / 387 / 81
Регистрация: 15.12.2009
Сообщений: 753
10.01.2010, 00:12 6
Цитата Сообщение от deathNC Посмотреть сообщение
Delphi
1
n := n - 1;
Процедура Dec делает тоже самое вот только не пойму почему ругается

Добавлено через 48 секунд
ну а n:=n-1 это самый простой способ)))
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 44
10.01.2010, 00:14  [ТС] 7
Вот и я о том-же. На другой кнопке этой программы "dec" работает, а здесь нет, непойму почему.
0
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
10.01.2010, 00:15 8
насколько я знаю, быстрее выполняется n:=n-1;
тут действие выполняется, а процедуру Dec и вызвать надо, и действия в ней происходят...

конечно есть более рациональные способы:
на ассемблере математику прорабатывать... но, это кто уж сумеет!!
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.01.2010, 02:11 9
Цитата Сообщение от SergStLv Посмотреть сообщение
На другой кнопке этой программы "dec" работает, а здесь нет, непойму почему.
На Dec(n) компилятор ругается, потому что переменная n объявлена так:
n:extended;
Dec(Val), Inc(Val), Succ(Val), Pred(Val) - применимы только к переменным порядкового типа и указателям. - Это целые, символы (Char, AnsiChar, WideChar), перечисления и указатели.
Цитата Сообщение от DeathNC Посмотреть сообщение
насколько я знаю, быстрее выполняется n:=n-1;
Нет - Inc(i), Dec(i) работают быстрее чем i +1; и i - 1. Для этих процедур компилятор создаёт оптимизированный код. Inc() и Dec() рекомендованы для использования в циклах для увеличения скорости.
2
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 44
10.01.2010, 22:53  [ТС] 10
Спасибо, теперь понятно.

Добавлено через 17 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
    i,k:integer;
    m:extended;
begin
 s:=Edit1.Text;
 i:=length(s);
 k:=0;
 m:=0;
 m:=i mod 2;
 if m<>0 then
  k:=i div 2+1
 else
 if m=0 then
  k:=i div 2;
 end;
 while k>0 do
  begin
  Insert ('a',s,i+1);
  dec (k);
  end;
Label3.Caption:=s;
end;
end.
Код
[Hint] Unit1.pas(64): Value assigned to 'k' never used
[Hint] Unit1.pas(67): Value assigned to 'k' never used
[Hint] Unit1.pas(61): Value assigned to 'm' never used
[Hint] Unit1.pas(60): Value assigned to 'k' never used
[Error] Unit1.pas(69): Declaration expected but 'WHILE' found
[Error] Unit1.pas(71): Undeclared identifier: 's'
[Error] Unit1.pas(72): Undeclared identifier: 'k'
[Error] Unit1.pas(73): '.' expected but ';' found
[Warning] Unit1.pas(75): Text after final 'END.' - ignored by compiler
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
Теперь ругается на строку
Delphi
1
while k>0 do
0
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
10.01.2010, 23:05 11
А перед строкой, на которую ругается, точно надо "end;" ставить... по моему нет...

Добавлено через 1 минуту
извиняюсь, ошибочка
end нужен

Добавлено через 6 минут
Цитата Сообщение от SergStLv Посмотреть сообщение
Спасибо, теперь понятно.

Добавлено через 17 минут
[DLPHI]
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
i,k:integer;
m:extended;
begin
s:=Edit1.Text;
i:=length(s);
k:=0;
m:=0;
m:=i mod 2;
if m<>0 then
k:=i div 2+1
else
if m=0 then
k:=i div 2;
end;
while k>0 do
begin
Insert ('a',s,i+1);
dec (k);
end;
Label3.Caption:=s;
end;
end.[/DELPHI]

[Hint] Unit1.pas(64): Value assigned to 'k' never used
[Hint] Unit1.pas(67): Value assigned to 'k' never used
[Hint] Unit1.pas(61): Value assigned to 'm' never used
[Hint] Unit1.pas(60): Value assigned to 'k' never used
[Error] Unit1.pas(69): Declaration expected but 'WHILE' found
[Error] Unit1.pas(71): Undeclared identifier: 's'
[Error] Unit1.pas(72): Undeclared identifier: 'k'
[Error] Unit1.pas(73): '.' expected but ';' found
[Warning] Unit1.pas(75): Text after final 'END.' - ignored by compiler
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'

Теперь ругается на строку while k>0 do
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Button2Click(Sender: TObject);
var
  s: String;
  i, k: Integer;
  m: Extended;
begin
  s := Edit1.Text;
  i := length(s);
  k := 0;
  m := 0;
  m := i mod 2;
  If m <> 0 then
    k := i div 2+1
  Else if m=0 then
    k:=i div 2;
  While k>0 do
    begin
      Insert ('a',s,i+1);
      dec (k);
    end;
  Label3.Caption:=s;
end;
 
Вот, подправил... проверь
1
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 44
10.01.2010, 23:11  [ТС] 12
Спасибо, работает.
0
10.01.2010, 23:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2010, 23:11
Помогаю со студенческими работами здесь

Требуется вычеркнуть минимально возможное количество чисел так, чтобы оставшиеся числа шли в порядке возрастания
27. Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется...

Если длина строки больше заданной, отбросить первые символы, иначе в ее начало добавить символы "."
4.Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина...

Если длина строки больше заданной, отбросить первые символы, иначе в её начало добавить символы "."
Дано целое число N (N&gt;0) и строка S.Преобразовать строку S в строку длины N следующим образом:если...

Заданы две строки. Убрать из более длинной строки последние символы так, чтобы длина строк стала одинаковой и склеить п
Создайте функцию (функции) для обработки списков, используя встроенные функции length, !!,...

Добавить в начало и конец слова столько звездочек, сколько букв в этом слове
Кто поможет: C++, дано слово. Добавить к нему в начале и конце столько звездочек, сколько букв в...

Необходимо изменить строку так, чтобы длина строки стала равна заданной длине
Дана строка текста, в котором нет начальных и конечных пробелов. Необходимо изменить её так, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru