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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2008, 14:57   #1
Logan
 
Регистрация: 13.01.2008
Сообщений: 4
Вопрос Народ, плиз, помогите с задачами. Заранее благодарен.

1) Напечатать заданный непустой текст, удалив из него все буквы "в", непосредственно перед которыми находится буква "с".

2) const: n=20
var: s: packed array [1..n] of char;
Напечатать литеры "Si" массива "S" в виде таблицы:

S1 S2 S3 ... Sn-1 Sn
S2 S3 S4 ... Sn S1
. . . . . .
Sn S1 S2 ... Sn-2 Sn-1

Последний раз редактировалось Logan; 14.01.2008 в 12:33.
Logan вне форума Ответить с цитированием
Старый 14.01.2008, 07:32   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Задача номер 2
Код:
for i:=1 to length(s) do
   begin
      for j:=1 to length(s) do write(s[j]:2);
      writeln;
      s:=copy(s,2,length(s)-1)+s[1];
   end;
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 14.01.2008, 07:56   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

1 задача
Код:
Program p1;
 uses Crt;
 var S : String;
begin
 readln(S);
 while Pos('cв',S)>0 do Delete(S,Pos('cв',S)+1,1);
 writeln(S);
end.
ADSoft на форуме Ответить с цитированием
Старый 14.01.2008, 08:53   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

To ADSoft. Наберите ваш код, прогоните программу и увидите, что она вам выдаст, сравните с тем, что требуется по условию. Вообще-то использование дополнительной строки это не очень хорошо, нужно работать с заданным массивом, но если хочется, тогда надо написать так:
Код:
program logan2;
uses crt;
const n=20;
var s:array[1..n]of char;
    s1:string;
    i,j:integer;
begin
clrscr;
for i:=1 to n do   //создадим например массив заглавных английских букв
   begin
     s[i]:=chr(i+64);
     write(s[i],' ');
   end;
readln;
s1:='';
for i:=1 to n do
s1:=s1+s[i];
for i:=1 to length(s1) do
   begin
//берем часть строки от нужного элемента до конца и прибавляем начало
     write(copy(s1,i,length(s1)-i+1)+copy(s1,1,i-1));
     writeln;
   end;
readln;
end.
А вот решение без использования строки.
Код:
program logan2;
uses crt;
const n=5;
var s:array[1..n] of char;
    i,j:integer;
begin
clrscr;
writeln('ishodnyi massiv:');
for i:=1 to n do
   begin
     s[i]:=chr(i+64);
     write(s[i],' ');
   end;
readln;
writeln('Matrica:');
for j:=1 to n do
   begin
      for i:=j to n do
      write(s[i],' ');
      for i:=1 to j-1 do
      write(s[i],' ');
      writeln;
   end;
readln;
end.

Последний раз редактировалось puporev; 14.01.2008 в 09:30.
puporev вне форума Ответить с цитированием
Старый 14.01.2008, 13:59   #5
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

To puporev
Пальцем ткни те меня в мой код, где ошибка.
Если вы считаете что ваш код лучше моего флаг вам в руки.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 14.01.2008, 14:08   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Зачем тыкать пальцем. Просто я набрал ваш код, прогнал программу с числами от 1 до 5 она мне выдала
1 1 1 1 1
3 3 3 3 3
5 5 5 5 5
1 1 1 1 1
3 3 3 3 3
Я просто переделал и она стала выдавать строки нормально, "лесенкой".
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 4 3 2 1
puporev вне форума Ответить с цитированием
Старый 14.01.2008, 14:12   #7
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

а вы не заметили что во втором цикле стоит J а не I?
как вы думали наверное...
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 14.01.2008, 14:57   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Конечно же я заметил, я прогнал ваш код, он мне вывел матрицу, которую без J он бы не выдал.
Сравните свою строку с моей.
Цитата:
s:=copy(s,2,length(s)-1)+s[1];
Цитата:
write(copy(s1,i,length(s1)-i+1)+copy(s1,1,i-1));
У вас все время индекс=2, а добавляется в конец строки только первый элемент.
У меня в каждой новой строке индекс увеличивается на 1, а добавляются в конец строки все элементы с 1 до предшествующего индексу.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз с задачами на экзамен Astor Помощь студентам 1 27.06.2008 18:49
Не могу решить программу в Turbo Pascal помогите пожалуйста! Заранее благодарен... dolbi Помощь студентам 5 01.04.2008 08:26
Помогите плиз с 2-мя задачами нужно до среды Perf Паскаль, Turbo Pascal, PascalABC.NET 2 22.01.2008 16:35
Народ плиз помогите с лабами Raptor5 Паскаль, Turbo Pascal, PascalABC.NET 11 15.01.2008 11:48