|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.11.2017, 20:05 | #1 |
Пользователь
Регистрация: 04.10.2017
Сообщений: 10
|
Помогите с циклом! (вложенные циклы и сохранять результаты вычислений в текстовые файлы)
procedure TForm1.Button1Click(Sender: TObject);
var g,j,l,t,k,W,I: integer; sum,N,S: LongInt; APath, AFileName: string; begin for W := 15 to 170 do //цикл вроде начинается, но только для 15 данные сохраняет. begin N := StrToInt (Label1.Caption);//число 36. S := (W); Memo1.Lines.Clear; for g :=1 to N do//Эту часть, цикл, почему то, делает только 1 раз. for j :=g+1 to N do for l :=j+1 to N do for t :=l+1 to N do for k :=t+1 to N do if (g<>j) and (g<>l) and (g<>t) and (g<>k) and (j<>l) and (j<>t) and (j<>k) and (l<>t) and (l<>k) and (t<>k) then begin sum := g + j + l + t + k; if (sum = S) then Memo1.Lines.Add (IntToStr(g)+''+IntToStr(j)+''+IntT oStr(l)+''+IntToStr(t)+''+IntToStr( k)); APath := 'C:\Users\Максим\Desktop\Тест\';//сохранение данных. for I := 15 to 170 do begin AFileName := APath + IntToStr(I) + '.txt'; if not FileExists(AFileName) then begin Memo1.Lines.SaveToFile(AFileName); end; end; end; end; end; end. Вот код программы. Я хочу что бы она выполняла мой код с изменением переменной N в цикле от 15 до 170. Но программа делает это только 1 раз, никак не могу понять, почему... Помогите!!! |
08.11.2017, 21:16 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Я не поленился, скомпилировал и запустил.
Создалась куча файлов типа 15.txt, 16.txt, .... 170.txt - больше сотни, не считал, прогу пришлось прервать. Каждый - по 7 байт. Так что все работает. Проверяйте свою Label1 - с самом деле там 36 или нет. А вообще код какой-то бредовый, хотя рабочий. Только в одном месте пробел убрать - IntT oStr(l) Впервые вижу, чтобы число задавалось StrToInt (Label1.Caption) Последний раз редактировалось type_Oleg; 08.11.2017 в 21:19. |
08.11.2017, 22:44 | #3 |
Пользователь
Регистрация: 04.10.2017
Сообщений: 10
|
Мне нужно что бы в эти файлы сохранялись эти вычисления
for g :=1 to N do for j :=g+1 to N do for l :=j+1 to N do for t :=l+1 to N do for k :=t+1 to N do if (g<>j) and (g<>l) and (g<>t) and (g<>k) and (j<>l) and (j<>t) and (j<>k) and (l<>t) and (l<>k) and (t<>k) then begin sum := g + j + l + t + k; if (sum = S) then Memo1.Lines.Add (IntToStr(g)+''+IntToStr(j)+''+IntT oStr(l)+''+IntToStr(t)+''+IntToStr( k)); Но сохраняется только 1 вычисление т.е для 15, а для всех остальных чисел нет.(в каждом текстовом файле от 15 до 170 будет одно и тоже 1 2 3 4 5(сумма этих чисел 15)) цикл почему то заканчивается на 15, хотя он должен вычислять для каждого числа от 15 до 170 (for W := 15 to 170 do) |
08.11.2017, 22:55 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
08.11.2017, 23:39 | #5 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
А вообще - что надо ?
Судя по коду - 100500 раз создавать кучу файлов. Или все же надо что-то накапливать в один файл ? |
09.11.2017, 07:29 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Дык спортлото ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.11.2017, 10:02 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
если правильно Вас понял, тогда:
Код:
|
09.11.2017, 15:27 | #8 |
Пользователь
Регистрация: 04.10.2017
Сообщений: 10
|
ДА!!! Блестяще!!! Именно то, что нужно было.Если это было легко сделать, не судите меня, я новичок ещё. Тему можно закрывать.
Можно ещё две вещи спросить? Мне нужно открывать их(файлы с расчётами) из другой программы и сохранить изменения в ЭТОМ же файле(Только без SaveDialog(долго тыкать)) И вторая вещь, в memo1 есть 5 строк 1 2 3 4 10 1 2 3 5 9 1 2 3 6 8 1 2 4 5 8 1 2 4 6 7 В memo2 есть 2 строчки 1 2 3 4 11 1 2 3 6 8 как сделать, что бы по нажатию кнопки удалялись все повторяющиеся строки из memo1? Последний раз редактировалось Hamza117; 09.11.2017 в 15:46. |
09.11.2017, 15:42 | #9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Пожалуйста.
Цитата:
начиная с олд-скульного var f : TextFile; Reset(f); Read(f, ...)/ReadLn(f, ...) продолжая, можно работать с файлом, как набором байт (см. TFileStream ) и заканчивая - прочитать файл целиком в память (TStringList, метод LoadFromFile() изменить нужные строки, целиком перезаписать - метод SaveToFile()) какой способ выбрать зависит от того, что именно Вы собираетесь с этим файлом делать. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вложенные циклы | yulia.a | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 20.04.2014 13:36 |
как сохранять текстовые файлы | nuberod | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 6 | 16.01.2013 13:36 |
как научить программу сохранять результаты | ArtemSK | Общие вопросы C/C++ | 2 | 03.01.2010 17:02 |
Произвести вычисление значений функций. Результаты вычислений вывести в компонент ListBox | Настенька..Блонди | Помощь студентам | 1 | 10.04.2009 00:32 |
Сортировать результаты вычислений | Jana | Microsoft Office Excel | 2 | 03.11.2008 08:36 |