Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 08.11.2017, 21:05   #1
Hamza117
Пользователь
 
Регистрация: 04.10.2017
Сообщений: 10
Репутация: 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 раз, никак не могу понять, почему...
Помогите!!!
Hamza117 вне форума   Ответить с цитированием
Старый 08.11.2017, 22:16   #2
type_Oleg
Профессионал
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Адрес: Хазарский каганат
Сообщений: 2,428
Репутация: 1379
По умолчанию

Я не поленился, скомпилировал и запустил.
Создалась куча файлов типа 15.txt, 16.txt, .... 170.txt - больше сотни, не считал, прогу пришлось прервать. Каждый - по 7 байт.
Так что все работает. Проверяйте свою Label1 - с самом деле там 36 или нет.

А вообще код какой-то бредовый, хотя рабочий. Только в одном месте пробел убрать - IntT oStr(l)

Впервые вижу, чтобы число задавалось StrToInt (Label1.Caption)

Последний раз редактировалось type_Oleg; 08.11.2017 в 22:19.
type_Oleg вне форума   Ответить с цитированием
Старый 08.11.2017, 23:44   #3
Hamza117
Пользователь
 
Регистрация: 04.10.2017
Сообщений: 10
Репутация: 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)
Hamza117 вне форума   Ответить с цитированием
Старый 08.11.2017, 23:55   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,675
Репутация: 6211
По умолчанию

Код:

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

А это зачем? Они и так никогда не будут равны
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 09.11.2017, 00:39   #5
type_Oleg
Профессионал
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Адрес: Хазарский каганат
Сообщений: 2,428
Репутация: 1379
По умолчанию

А вообще - что надо ?
Судя по коду - 100500 раз создавать кучу файлов.
Или все же надо что-то накапливать в один файл ?
type_Oleg вне форума   Ответить с цитированием
Старый 09.11.2017, 08:29   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,675
Репутация: 6211
По умолчанию

Дык спортлото ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 09.11.2017, 11:02   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,899
Репутация: 5228
По умолчанию

Цитата:
Сообщение от Hamza117 Посмотреть сообщение
Мне нужно что бы в эти файлы сохранялись эти вычисления
если правильно Вас понял, тогда:

Код:

procedure TForm1.Button1Click(Sender: TObject);
var
  g, j, l, t, k, W, N: LongInt;
  APath: string;
  TS: TStringList;
begin
  TButton(Sender).Enabled := false;
  TS := TStringList.Create;

  N := 36; //StrToInt(Label1.Caption); //число 36.

  APath := 'C:\Users\Максим\Desktop\Тест\'; //путь для сохранение данных.

  for W := 15 to 170 do
  begin
    TS.Clear;
    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 + l + t + k) = W) then
                TS.Append(IntToStr(g) + ' ' + IntToStr(j) + ' ' + IntToStr(l) + ' ' + IntToStr(t) + ' ' + IntToStr(k));

    TS.SaveToFile(APath + IntToStr(W) + '.txt');
  end;
  TButton(Sender).Enabled := true;
  FreeAndNil(TS);  
  Application.MessageBox(PChar('Всё файлы сохранены в каталоге '+APath), 'Информация', MB_ICONINFORMATION or MB_OK);
end;

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 09.11.2017, 16:27   #8
Hamza117
Пользователь
 
Регистрация: 04.10.2017
Сообщений: 10
Репутация: 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 в 16:46.
Hamza117 вне форума   Ответить с цитированием
Старый 09.11.2017, 16:42   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,899
Репутация: 5228
По умолчанию

Пожалуйста.

Цитата:
Сообщение от Hamza117 Посмотреть сообщение
Можно ещё одно, мне нужно открывать их(файлы с расчётами) из другой программы и сохранить изменения в этом же файле. Как это сделать?
это текстовые файлы. можно с ними работать как с обычными текстовыми файлами.

начиная с олд-скульного var f : TextFile; Reset(f); Read(f, ...)/ReadLn(f, ...)
продолжая,
можно работать с файлом, как набором байт (см. TFileStream )

и заканчивая - прочитать файл целиком в память (TStringList, метод LoadFromFile()
изменить нужные строки, целиком перезаписать - метод SaveToFile())

какой способ выбрать зависит от того, что именно Вы собираетесь с этим файлом делать.
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вложенные циклы yulia.a Паскаль 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 18:02
Произвести вычисление значений функций. Результаты вычислений вывести в компонент ListBox Настенька..Блонди Помощь студентам 1 10.04.2009 00:32
Сортировать результаты вычислений Jana Microsoft Office Excel 2 03.11.2008 09:36


14:00.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru