Помогите написать программу

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
VirSysError
незнакомец
Сообщения: 2
Зарегистрирован: 10.06.2011 11:03:24

Помогите написать программу

Сообщение VirSysError »

Дана последовательность n строк(n<= 100)
1)создать массив D ,элементами которого являются длины строк и номера строк(то есть записи)
2)Найти самую длинную строку (вывести ее индекс,а не длину)
3)Для самой длиннойстроки выполнить операцию"реверс"
4) отсортировать массив D, переставив одновременно с длинами строк(по возрастанию) еще и номера строк.
Буду благодарен!
kipar
новенький
Сообщения: 78
Зарегистрирован: 04.03.2010 11:15:54

Сообщение kipar »

... и все это без циклов и промежуточных переменных :P
VirSysError
незнакомец
Сообщения: 2
Зарегистрирован: 10.06.2011 11:03:24

Сообщение VirSysError »

мне вериться что тута с циклами =) написал создание массива )
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

Код: Выделить всё


unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  LCLProc;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

  ElementD = record
    Length :Integer;
    Index  :Integer;
  end;

 TD = array of ElementD;
var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }
Function MaxLength(var AD:TD):ElementD;
var I:Integer;
begin

   Result:=AD[0];
   if High(AD) < 1 then exit;

   For I:=1 to High(AD) do
     if AD[I].Length > Result.Length then
         Result:=AD[I];
end;

Function Revers(const S:AnsiString):AnsiString;
var I,Len:Integer;
begin
   Result:=S;
   Len:=Length(S);
   For I:=1 to Len do
     Result[Len-I+1]:=S[I];
end;

procedure TForm1.Button1Click(Sender: TObject);
var A1:TD;
    StrList:TStringList;
    I:Integer;
    Maximum:ElementD;
begin
  StrList:=TStringList.Create;

  StrList.LoadFromFile('Strings.txt');

  SetLength(A1,StrList.Count);

  for I:=0 to StrList.Count-1 do
    begin
      A1[I].Index:=I;
      A1[I].Length:=UTF8Length(StrList[I]);
    end;

  Maximum:=MaxLength(A1);

  Memo1.Lines.Add('MaxLen    = '+IntToStr(Maximum.Length));
  Memo1.Lines.Add('Index     = '+IntToStr(Maximum.Index));
  Memo1.Lines.Add('MaxStr    = '+StrList[Maximum.Index]);
  Memo1.Lines.Add('ReversStr = '+AnsiToUTF8(Revers(UTF8ToAnsi(StrList[Maximum.Index]))));

  A1:=Nil;
  StrList.Free;

end;

end.


Последнее задание сами... И .... хотя ладно все равно модераторы удалят мои коменты :(

Изображение

Если содержание файла было таким:

Код: Выделить всё

Наклейка в маршрутке :
Перечень лиц,имеющих право бесплатного проезда:
1) дети до 7 кг
2)агенты матрицы (при предъявлении документа)
3)лауреаты нобелевской премии
4)любовницы лауреатов нобелевской премии
5) ТОм Круз
18 сек
Дополнительные услуги, предоставляемые водителем :
1) посигналить - 5 руб
2) посигналить два раза 7 руб
3) хлопнуть в ладоши 7 руб
4) закричать  Аа-а-аа-а 50
5) дать порулить - 500
Вложения
Revers.zip
(3.86 КБ) 491 скачивание
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Код: Выделить всё

Result:=AD[0];
   if High(AD) < 1 then exit;

Может вызвать ошибку, т.к. еще не пройдена проверка на длину массива
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

VirtUX :D :D :D Ну программа написана на коленке, без всяких там а вдруг.. Я вообще не любитель отвечать на подобные вопросы, и задачи, когда у чел 1 сообщение, он ничего не сделал, кода нет, одна задача, А мы тут .... не решаем... Вот я и подумал, ведь человек человеку друг... а бедняга VirSysError, 1 год 1 месяц 1 неделю 1 день 1 час и 1 минуту не может решить поставленную задачу, И я мол типа решил помочь. Зачем (Ведь я не люблю этого делать) да делать нечего было вот и написал, а то ведь вдруг ..... ну Вы понимаете :mrgreen:

Написал бы больше. Но боюсь я модераторов, вдруг накажут :oops:

PS. Предвижу резонный вопрос почему только 1 год 1 месяц 1 неделю 1 день 1 час и 1 минуту ГДЕ секунда?, знаете это философский вопрос, на который пока у меня нет ответа :evil:
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Чем больше кода, тем больше мыслей - как у кодируещего, так и у разбирающего. ИМХО - это позитив.
Секунда очень важна! Ведь именно в этот момент приходит озарение. Потом уже через минуту появляется уверенность в идее. Через час готов начальный план. Через неделю пожинаем первые плоды. Через месяц начинаем альфа-тест. Через год получаем гонорар и удовлетворение от проделанной работы. ИМХО без секунды никак нельзя!
Спросите почему такой длительный процесс тестирования? Хм... Подымите руку те, кто после непродолжительных тестов получил безглючный, обожаемый заказчиком проект? А? Есть такие? Что Вы говорите: "Скомпиленая пустая форма не глючит - дэ'факто!"? А сколько раз Вы ее уже запустили? На скольких ПК/ОС? Еще не запускали? Просто - знаете?
Мое мерси за флуд. Но здесь намек постеру на решение его задачи, и не только этой ;)
Ответить