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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 19:52   #1
kat297
Пользователь
 
Регистрация: 01.06.2010
Сообщений: 18
Печаль Множества и не только...

Дана матрица А размерностью [N х N] элементов целого типа из диапазона от -127 до 127. Не используя вспомогательных массивов и не изменяя порядка следования элементов в матрице А определите, есть ли хотя бы один столбец, содержащий элементы, входящие в какой-либо из оставшихся N-1 столбцов и если есть, то выведите на экран все такие столбцы



Не привыкла просить помощи, но все же, если не трудно...



Не хочу показаться наглой...но еще проблемки с этими задачами:

1) Дан текстовый файл литерных величин. Преобразовать исходный текстовый файл, удалив все слова, встречающиеся более 2 раз.

2)Составьте программу шифрования текстового сообщения. Можно использовать такой способ шифровки. Шифровальщик (пользователь) задает ключ шифровки - целое число, которое определяет величину смещения букв русского алфавита, например ключ =3, тогда в тексте буква “а” заменяется на “г” и т.д. Используются все буквы русского алфавита

3)В заданном предложении удалите каждое второе слово, а оставшиеся слова переверните. (Например, из текста “А роза упала на лапу азора” должен получиться текст “азор ан ароза”).



Не получается как-то...Или хотя бы намекните каким образом это можно сделать.. Заранее спасибо
kat297 вне форума Ответить с цитированием
Старый 02.06.2010, 11:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Составьте программу шифрования
Обрати внимание здесь:
http://www.programmersforum.ru/showthread.php?t=3209
на функцию Cesar в посте RSLoader'a.

Цитата:
В заданном предложении удалите каждое второе слово
http://www.programmersforum.ru/showt...369#post398369
Здесь я даю пример разбора строки в массив
Добавь что-то типа:
Код:
 for i:=1 to count do begin
  if i mod 2=0 then
   for j:= length(a[i]) downto 1 do write(a[i][j]); write(' ');
 end;
По идее это должно вывести слова в перевернутом виде, но не проверял...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2010, 01:37   #3
kat297
Пользователь
 
Регистрация: 01.06.2010
Сообщений: 18
По умолчанию

Stilet, огромнейшее спасибо за помощь) Оооочень помогло)

Есть еще один маленький вопросик... Вроде написала.. Но сказали переделать. Вот условие:
Дан прямоугольный массив А[1..M,1..N]. Получить номера строк, элементы которых расположены в возрастающем порядке
Вот мой вариант:
Код:
var
 a:array [1..1000,1..1000] of integer;
 n,m:integer;
procedure vvod(x,y:integer);
 var
  i,j:integer;
begin
 randomize;
 for i:=1 to x do
 begin
  for j:=1 to y do
   begin
    a[i,j]:=random(100);
    write(a[i,j]:5);
   end;
  writeln;
 end;
end;

procedure poisk;
 var
  i,j,s:integer;
begin
 for i:=1 to n do
 begin
  s:=0;
  for j:=1 to n-1 do
     if (a[j,i])>(a[j+1,i]) then
   begin
    inc(s);
    write(a[j,i],' ',a[j+1,i],' ');
   end;
  if s<>0 then
   writeln(i);
 end;

end;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  write('n m=');
  readln(n, m);
  vvod(n, m);
  poisk;
  readln;
end.
Проблема в том, что он сравнивает и выводит 2 соседних числа, т.е. если рядом стоят 3 числа удовлетворяющие условию, то выводит пару 1,2 и 2,3, а должно 1,2,3. Вроде надо добавить цикл.. С ним проблемы

Последний раз редактировалось Stilet; 03.06.2010 в 08:15.
kat297 вне форума Ответить с цитированием
Старый 03.06.2010, 08:24   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы делал так:
Код:
  var
        a:array [1..1000,1..1000] of integer;
        ns:array[1..1000] of boolean;
        i,j:integer;
        x,y:integer;
begin
 x:=5;y:=5;
 for i:=1 to x do begin ns[i]:=true;
  for j:=1 to y do begin
    a[i,j]:=random(100);
    write(a[i,j]:5);

    if (j>1) and  ns[i] and (a[i,j]<a[i,j-1]) then
      ns[i]:=false;
   end;
  writeln;
 end;
 writeln;
 for i:=1 to x do if ns[i] then write(i:5);
  { TODO -oUser -cConsole Main : Insert code here }
  readln;
end.
Смысл тут в том что в допмассиве запоминается false если в последовательности появляются радомстоящие элементы не по возрастанию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Группы символов, состоящие только из латинских букв, если первая буква группы входит в нее еще только оди Ela Помощь студентам 0 29.04.2010 13:41
Только - только начал работать с БД. Bilargo БД в Delphi 6 11.10.2009 16:15
Одни из jpg файлов реальные JPEG а другие только название. как загрузиь только картинки? AgressiveBehavior Общие вопросы Delphi 1 16.09.2009 09:39
Множества в Си Иллидан Общие вопросы C/C++ 14 17.01.2008 15:58
начал учить только-только - нужна ваша помошь vanDJ Помощь студентам 20 18.12.2007 21:53