|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
надо найти в этом массиве 3 наибольших и записать их в текстовый файл
Код:
procedure TfrmMain.Button1Click(Sender: TObject); var // число точек в исходных данных и в результатах In_N : Integer; // массив с исходными данными In_Data: array of Double; // переменная для записи в файл DataFile : TextFile;[/quote] // переменная цикла i: Integer; // линия для графика - если нужна Line : TLineSeries; begin // получение числа точек в исходных данных с формы In_N := 35; ////////////////////////////////////////// In_N :=StrToInt(edValN.Text); // получение параметра - пример ///////////////////Scale := StrToFloat(eScale.Text); // создаем массив данных // вначале задаем размер массива SetLength(In_Data,In_N); // задаем элементы массива for i := 0 to In_N - 1 do In_Data[i] := Cos(i*In_N)*Exp(-i*0.44)+1; MemoOut.Clear; // и покажем новые for I := 0 to In_N - 1 do // Format() - преобразование числа в строку по указанному // формату. Подробнее и с примерами в справке Delphi - F1. MemoOut.Lines.Add(Format('%8.3f',[In_Data[i]])); // *** добавим график - если нужно // уберем старый график ChartMain.SeriesList.Clear; // создадим новый Line := TLineSeries.Create(ChartMain); // присвоим значения Y координат Line.AddArray(In_Data); // изменим цвет и толщину линии Line.LinePen.Color := clBlue; Line.LinePen.Width := 1; // и выведем на форму ChartMain.AddSeries(Line); // свяжем переменную с файлом DataFile AssignFile(DataFile,'in.txt'); // откроем для записи Rewrite(DataFile); // запись параметров Writeln(DataFile); //стояло еще (,Scale) // размер массива чисел Writeln(DataFile,In_N); // каждое значение пишем в новую строку for i := 0 to In_N - 1 do Writeln(DataFile,In_Data[i]); //закрываем файл - сохраняем его CloseFile(DataFile); DeleteFile('out.txt'); end; |
#2
|
||||
|
||||
Тебе сделали за деньги эту прогу?
Просто пример того, как с задачи "2+2=?" сгородить сотни строк кода. PHP код:
сos(i*X)*e^(-i*0.44)+1 где х одновременном есть размером массива? Чесно скажу, сколько в свое время перерешал подобных задач, никогда такого не видел. При том что в cos значение i*x в радианах.... Последний раз редактировалось Konrad, 26.12.2010 в 18:33. |
#3
|
|||
|
|||
не не заденьги, нам препод дал пример программы, я просто с неё взял кусок, так а как тут с массивом. что мне надо, плиз?
|
#4
|
||||
|
||||
Цитата:
|
#5
|
|||
|
|||
институт, радиофак, по спецкурсу, как бы для герадара
|
#6
|
||||
|
||||
Цитата:
Ок, сейчас чтонить напишу. Только уточни: если поличиться массив, например 1,1,3,1,2,5,5,7,9,9; считать 4-ре макс элемента как 9,9,7,5. Или 9,7,5,3? Последний раз редактировалось Konrad, 26.12.2010 в 18:52. |
#7
|
|||
|
|||
нет чтобы как они забиты в массиве 5,7,9,9
|
#8
|
||||
|
||||
Вот что нагородил:
Печатает значения функции и 4ре макс элемента PHP код:
Правда код мне не особо нравится. Писал его, одновременно говорил по тел, и смотрел краем глаза фильм Так что уж извиняйте Последний раз редактировалось Konrad, 26.12.2010 в 19:47. |
#9
|
|||
|
|||
Уж извольте, на быструю руку набросал, можете попробывать
Код:
procedure Sort( var AResult:array of Double); var j: Integer; tmp : Double; begin for j :=Low(AResult) to High(AResult) - 1 do if AResult[j] > AResult[j+1] Then begin tmp := AResult[j]; AResult[j] := AResult[j+1]; AResult[j+1] := tmp; end; end; procedure Find(const AArray: array of Double; AFileName:String); var Result: array [0..2] of Double; ind :Integer; f: Textfile; begin Result[0] := 0; Result[1] := 0; Result[2] := 0; for ind:= Low(AArray) to High(AArray) do begin if AArray[ind] > Result[0] Then begin Result[0] := AArray[ind]; Sort(Result); end; end; AssignFile(f, AFileName); {Assigns the Filename} ReWrite(f); {Create a new file named ek.txt} for ind:= Low(Result) to High(Result) do Writeln(f, Format('%8.3f', [Result[ind]])); Closefile(f); {Closes file F} end; ... Find(In_Data, 'c:\1.txt'); // Найти и сохранить ... Последний раз редактировалось Admin, 26.12.2010 в 20:02. |
#10
|
||||
|
||||
Так-с, или меня плохо учили программированию в далекие времена.
Или это сейчас ТАК всех учат))) Ну зачем в цикле тебе еще сортировку массива каждый раз делать? Чтобы программа работала быстрее? Последний раз редактировалось Konrad, 26.12.2010 в 20:04. |
#11
|
|||
|
|||
скажи пожалуйста а куда мне это всё вставлять, я просто вставляю, а оно ничего не изменилось? помоги плиз
|
#12
|
||||
|
||||
Цитата:
Тебе ж нужно в файл. Просто допиши сохранение массива PHP код:
|
#13
|
|||
|
|||
понимаете, у меня ж там еще и график рисует, я там вообще уже запулся что куда вставлять
|
#14
|
||||
|
||||
Вот код, который у тебя записывает данные в файл
PHP код:
Что за файл аут.тхт - не понятно, видимо то что ты привел, только часть кода. Ну не важно. Вобщем сюда допиши еще сохранение массива, того о котором я писал. Тоесть в мах[1,2,3,4] найдены макс числа, вот их и сохраняешь. Не пойму что вызвало затруднения? Последний раз редактировалось Konrad, 26.12.2010 в 21:14. |
#15
|
|||
|
|||
а что за циклы от 1 до 4 и от 2 до 4?
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|