Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2009, 16:20
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Стрелка 2 задачки

Помогите пожалуйста с решением 2х простеньких задачек (желательно с пояснениями, а то на здаче спрашивают каждую строку программы, а я и не всегда могу обямнить ) сам я в функциях с удалением полный 0 а тут на зачет их дали.

Код:
Задача 1:
Дан двумерный массив. Удалить строку и столбец, 
на пересечении которых расположен наименьший 
по модулю элемент массива.
Код:
Задача 2:
Отредактировать заданное предложение, удаляя из 
него слова с нечетными номерами и переворачивая 
слова с четными номерами. 
(Пример: Уронили мишку на пол, результат: укшим лоп)
заранее спасибо .

Последний раз редактировалось segas, 13.02.2009 в 16:22.
Ответить с цитированием
  #2  
Старый 14.02.2009, 11:49
Аватар для Zigfreed1
Zigfreed1 Zigfreed1 вне форума
Прохожий
 
Регистрация: 08.02.2009
Сообщения: 44
Репутация: 18
По умолчанию

Тоесть я так понял, ты в этом не шариш вообще?)
Ну ладно, если будет время напишу..
Ответить с цитированием
  #3  
Старый 14.02.2009, 13:40
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

насчёт первой задачи, может я сильго ошибаюсь, но разве массив - не последовательность индексированных элементов? Если так, то что значит удалить строку/столбец?
Ответить с цитированием
  #4  
Старый 14.02.2009, 14:46
Аватар для Zigfreed1
Zigfreed1 Zigfreed1 вне форума
Прохожий
 
Регистрация: 08.02.2009
Сообщения: 44
Репутация: 18
По умолчанию

Цитата:
Если так, то что значит удалить строку/столбец?
хм.. Я думаю нужно просто очистить все елементы из строки/столбца
Ответить с цитированием
  #5  
Старый 14.02.2009, 15:21
Аватар для Zigfreed1
Zigfreed1 Zigfreed1 вне форума
Прохожий
 
Регистрация: 08.02.2009
Сообщения: 44
Репутация: 18
По умолчанию

Так, я те 1-ю задачу набросал... если чё-то нетак исправиш сам.
2-ю уже сам решай ))
Размещай на форме stringgrid и button (Стринггрид шоб ты видел шо делаеться с массивом)

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
k=10;// количество строк
b=5;// количество столбцов
var
a:array [1..k,1..b] of real;// двухмерный массив
i,f:integer;  // счётчики
delcol,delrow:integer;  // нужный нам номер колонки и строки
amin:real;    //  наше минимальное значение

begin

stringgrid1.ColCount:=b; // Присваиваем стринггридду нужное количество строк и столбцов
stringgrid1.RowCount:=k;

amin:=10000000000000; /// ну эт шоб мало небыло
for i:=0 to k-1 do
for f:=0 to b-1 do begin
a[i,f]:=-50 +Random(101);   // Заполняем случайно числами от -50 до 50
stringgrid1.Cells[f,i]:=floattostr(a[i,f]);   // заполняем таблицу
if abs(a[i,f])<amin then begin   // если значение ячейки меньше amin то
amin:=abs(a[i,f]);  // присваиваем amin это значение и запоминаем номера строки и столбца в котором находиться
delcol:=f;
delrow:=i;
end;
end;

for i:=0 to k-1 do begin
a[i,delcol]:=0;
stringgrid1.Cells[delcol,i]:=''; // Удаляем строку

end;

for i:=0 to b-1 do begin
a[delrow,i]:=0;
stringgrid1.Cells[i,delrow]:=''; // Удаляем столбец

end;

end;
Ответить с цитированием
  #6  
Старый 14.02.2009, 20:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,023
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

алгоритм решения 2й задачи:
1. Разбить предложения в массив строк по словам.
2. идем циклом по полученному массиву и собираем предложение обратно по условиям: если индекс нечетный - пропускаем, если четный - добавляем, переворачивая.
3. Переворот - работаем со строкой, как с массивом, идем от конца к началу и добавляем результат.

Код:
// переворачивает строку
function ReverseStr(AStr : String) : String;
var
  I : Integer;
begin
  Result := '';
  For I := Length(AStr) DownTo 1 Do Result := Result + AStr[i];
end;

// обрабатываем фразу
function ProcessPhrase(APhrase : String) : String;
var
  I : Integer;
  A : Array Of String;
begin
  // разбиваем предложение на слова в массив
  SetLength(A,0);
  While Pos(' ',APhrase) > 0 Do
    begin
      SetLength(A,Length(A)+1);
      A[High(A)] := Copy(APhrase,1,Pos(' ',APhrase) - 1);
      APhrase := Copy(APhrase,Pos(' ',APhrase)+1,Length(APhrase) - Pos(' ',APhrase) + 1);
    end;
  If APhrase <> '' Then
    begin
      SetLength(A,Length(A)+1);
      A[High(A)] := APhrase;
    end;

  // Выводим по условиям
  // Дин. массив A имеет начало с 0!!!
  Result := '';
  For I := Low(A) To High(A) Do
    If ((I+1) mod 2) = 0 Then
        Result := Result + ReverseStr(A[i]) + ' ';

  // Подчищает пробел в хвосте
  Result := Trim(Result);
end;


Использование:
Код:
procedure TForm1.Button1Click(Sender : TObject)
begin
  Edit2.Text := ProcessPhrase(Edit1.Text);
end;
Ответить с цитированием
  #7  
Старый 15.02.2009, 07:22
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
По умолчанию

Цитата:
Сообщение от Zigfreed1
Тоесть я так понял, ты в этом не шариш вообще?)
Ну ладно, если будет время напишу..
Но с удалением и вставкой вообще никак
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter