Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.04.2008, 23:06   #1
Aleksander
 
Регистрация: 06.04.2008
Сообщений: 3
По умолчанию удвоение символа

уважаемые програмисты помогите.
немугу заставить правильно работать программу при проверке четности программа зацикливается.
На паскале.
ввести произвольную символьную цепочку. удвоить ее символы на четных местах, затем ывести полученную символьную цепочку в обратном порядке.
Aleksander вне форума
Старый 06.04.2008, 23:07   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

И где ваш код, который я жажду поправить до работующей версии?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума
Старый 07.04.2008, 07:59   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Задача конечно супер, аж в два действия с одной процедурой и двумя циклами, которые так и норовят зациклиться.
Код:
uses crt;
var s:string;
    i,n:byte;
begin
clrscr;
write('Vvedite proizvolny nabor simvolov:');
readln(s);
n:=length(s);
for i:=n downto 1 do  //вставляем с конца, чтобы индексы не менялись
if i mod 2=0 then      //если индекс четный
   begin
     insert(s[i],s,i+1);  //вставляем за ним еще такой же
     n:=n+1;              //увеличиваем длину строки
   end;
writeln;
for i:=n downto 1 do   //читаем строку задом наперед
write(s[i]);
readln
end.
puporev вне форума
Старый 07.04.2008, 09:56   #4
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

Код:
var s:string[30];
     i:integer;
readln(s);
for i:=1 to length(s) do
  if i div 2 = 0 then s[i]:=chr(ord(s[i])*2);
{если четный - то удваиваем символ!}
  for i:=length(s) downto 1 do
   write(s[i]);
  readln;
end.
вот и все
Программирование - это великое искусство... Такое же как например и живопись!

Последний раз редактировалось ACE Valery; 13.02.2011 в 12:50.
Rusl92 вне форума
Старый 07.04.2008, 09:57   #5
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

Еще можно проверять стоит ли символ на четном / нечетном элементе функцией odd
Функция odd( i ) проверяет, является ли аргумент i нечетным и возвращает "истину", если это действительно так. Тип аргумента- целый, тип результата- логический.
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума
Старый 07.04.2008, 11:43   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
if i div 2 = 0 then
Это неверно, посмотрел бы постом выше. Четность определяется
if i mod 2 = 0 then ...
Цитата:
s[i]:=chr(ord(s[i])*2);
Удваивать нужно не код символа, а добавить еще один такой же. Что вы получите при удваивании, если код символа больше 127?
И вообще, прежде чем о чем-то писать, следует посмотреть что написали до вас.
puporev вне форума
Старый 07.04.2008, 21:12   #7
Aleksander
 
Регистрация: 06.04.2008
Сообщений: 3
По умолчанию

Уважаемый puporev спасибо вам огромное. Может быть еще подскажите почему у меня при включении модуля crt паскаль пишет ошитку "попытка деления на ноль" ошибка 200. где нужно "подкрутить" и что подрегулировать чтобы этого небыло ?
Aleksander вне форума
Старый 07.04.2008, 21:29   #8
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
Сообщение от Aleksander Посмотреть сообщение
Уважаемый puporev спасибо вам огромное. Может быть еще подскажите почему у меня при включении модуля crt паскаль пишет ошитку "попытка деления на ноль" ошибка 200. где нужно "подкрутить" и что подрегулировать чтобы этого небыло ?
Нужно видеть код.

АДД: А в книжке пишут:
Цитата:
200: Деление на ноль. Кроме некорректных арифмитических операций, к данной ошибке может приводить использование модуля Crt на современных быстрых компьютерах. Это связанно с особенностями операций инициализации в этом модуле......
Во как..
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 07.04.2008 в 21:33.
Карась вне форума
Старый 07.04.2008, 21:33   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Aleksander Посмотреть сообщение
..........почему у меня при включении модуля crt паскаль пишет ошитку "попытка деления на ноль" ошибка 200. где нужно "подкрутить" и что подрегулировать чтобы этого небыло ?
http://rc4wa.narod.ru/pascal.html
B_N вне форума
Старый 07.04.2008, 22:18   #10
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Вот рабочая версия.
Код в формате Дос кодировки(можно через блоконот в файл с расширением *.pas пихнуть). Модуль CRT подключен лишь ради очистки экрана вначале, можно удалить, если ненужно.

Код:
Uses Crt;
Var S :Array[0..1] of String;
    I,II :Integer;
begin
 ClrScr;
  For I:=0 To 1 Do
  S[I] := '';
 Write('‚ўҐ¤ЁвҐ ЇаҐ¤«®¦Ґ*ЁҐ: '); Readln(S[0]);
{ “¤ў Ёў Ґ¬ §¤Ґбм }
 II := Length(S[0]);
  If II>0 Then
  For I:=1 To II Do
  Case (I mod 2)=0 Of
 True:   S[1] := S[1] + S[0][I] + S[0][I];
 False: S[1] := S[1] + S[0][I];
  End;
{ ‡ ¤®¬ * ЇҐас¤ ўлў®¤Ё¬ §¤Ґбм }
  Write('ђҐ§г«мв в: ');
  II := Length(S[1]);
  If II>0 Then
  For I:=II DownTo 1 Do
  Write(S[1][I]);
 Readln;
end.
Alter вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление символа в строке Fantom Общие вопросы Delphi 2 23.06.2008 16:03
шифрование символа TRISTAR Общие вопросы C/C++ 2 08.06.2008 01:35
Удаление символа в ячейке Flangini Microsoft Office Excel 2 05.05.2008 14:02
вопрос о цвете символа Ceprey Общие вопросы C/C++ 5 01.05.2008 20:53
последНИЕ 3 символа... PAVEL315 Общие вопросы Delphi 6 23.02.2007 11:20