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

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

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

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

Сообщение VirSysError » 10.06.2011 11:05:51

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

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

Сообщение kipar » 10.06.2011 11:33:19

... и все это без циклов и промежуточных переменных :P
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

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

Сообщение VirSysError » 10.06.2011 11:39:41

мне вериться что тута с циклами =) написал создание массива )
VirSysError
незнакомец
 
Сообщения: 2
Зарегистрирован: 10.06.2011 11:03:24

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

Сообщение Maxizar » 10.06.2011 12:15:23

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

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 КБ) Скачиваний: 406
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

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

Сообщение VirtUX » 10.06.2011 12:54:23

Код: Выделить всё
Result:=AD[0];
   if High(AD) < 1 then exit;

Может вызвать ошибку, т.к. еще не пройдена проверка на длину массива
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

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

Сообщение Maxizar » 10.06.2011 18:20:40

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

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

PS. Предвижу резонный вопрос почему только 1 год 1 месяц 1 неделю 1 день 1 час и 1 минуту ГДЕ секунда?, знаете это философский вопрос, на который пока у меня нет ответа :evil:
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

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

Сообщение VirtUX » 10.06.2011 20:00:36

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


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru