Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Nulled
0 / 0 / 0
Регистрация: 21.08.2010
Сообщений: 56
#1

Файлы: заполнить числами, перемножить и вывести результат - Delphi

01.04.2012, 15:32. Просмотров 1166. Ответов 4
Метки нет (Все метки)

Собственно только начал дельфи, нужна небольшая помощь.

Нужно создать файл и рандомно заполнить его числами (1 кнопка). Потом эти числа перемножить и вывести результат (2 кнопка).

Вот что я делаю:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var dan:textfile; i,x:integer;
a:array[1..10] of integer; s:real;
 
{Код кнопки "Создать и заполнить"}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
assignfile(dan,'files.txt');
rewrite(dan);
if fileExists('files.txt') then
   showmessage('файл создат')
   else
   showmessage('Файл не создан');
      I:=0;
      s:=0;
      randomize;
for i:=1 to 10 do
      begin
      write(dan,random(10)+1);
      end;
for i:=1 to 10 do
      begin
      reset(dan);
      read(dan,a[i]);
      memo1.lines[i]:=inttostr(a[i]);
      end;
end;
тут я хочу просто заполнить и вывести в мемо или едит то, что рандомно заполнилось в файл. Но не тут то было. Вылетает ошибка на read(dan,a[i]) там, где я хочу все числа из файла запилить в массив что бы их перемножить!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 15:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Файлы: заполнить числами, перемножить и вывести результат (Delphi):

Выполнить над числами указанное действие и вывести результат - Delphi
Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер...

Заполнить массив случайными числами на отрезке и вывести на печать - Delphi
Как реализовать задачи на delphi consol application? 1. Дан двумерный массив размерности 10х10. Заполнить его случайными числами на...

Заполнить квадратную матрицу порядка N числами от 1 до N^2 по спирали и вывести в текстовый файл - Delphi
Добрый день, друзья! У меня вот какой вопрос появился. Написал простейшую программу для создания матрицы (которая указана в теме),...

Заполнить массив случайными числами в отрезке [-3,2], найти произведение и вывести ответ в memo - Delphi
Заполнить массив случайными числами в отрезке . Найти произведение и вывести ответ в memo1.

Заполнить ListBox случайными числами. Найти указанный элемент и его номер, или вывести сообщение, что элемента с таким свойством не существует. - Delphi
Заполнить ListBox случайными числами. Найти указанный элемент и его номер, или вывести сообщение, что элемента с таким свойством не...

Перемножить исходную матрицу саму на себя, результат перемножения отобразить в форме таблицы - Delphi
Люди, помогите пожалуйста 1. Перемножить исходную матрицу саму на себя, результат перемножения отобразить в форме таблицы 2. Найти...

4
tm2012
108 / 108 / 23
Регистрация: 04.03.2012
Сообщений: 146
01.04.2012, 16:38 #2
Вылетает ошибка из-за того, что файл текстовый, а массив типа integer. Делайте файл типа integer, или массив string
0
Puporev
Модератор
52835 / 40646 / 13894
Регистрация: 18.05.2008
Сообщений: 94,316
01.04.2012, 16:38 #3
Delphi
1
2
3
4
5
6
7
8
9
10
11
for i:=1 to 10 do
write(dan,' ',random(10)+1);//числа нужно через пробел писать, причем пробел впереди
reset(dan);
n:=0;
while not eof(dan)do
 begin
  n:=n+1;
  read(dan,a[n]);
  memo1.lines.Add(inttostr(a[n]);
 end;
end;
1
Nulled
0 / 0 / 0
Регистрация: 21.08.2010
Сообщений: 56
01.04.2012, 17:47  [ТС] #4
Цитата Сообщение от Puporev Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
for i:=1 to 10 do
write(dan,' ',random(10)+1);//числа нужно через пробел писать, причем пробел впереди
reset(dan);
n:=0;
while not eof(dan)do
 begin
  n:=n+1;
  read(dan,a[n]);
  memo1.lines.Add(inttostr(a[n]);
 end;
end;
Не получается с вашим вариантом. Ошибка.

Вот я в паскале набрал эту задачку, работает.
А в дельфи не могу, ошибки всякие...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var dan,result:text;
    i:integer;  s:real;   x:integer;
    a:array[1..10] of integer;
begin
assign (dan,'dan.txt');
assign (result,'result.txt');
rewrite(dan);
 
for i:=1 to 10 do
  write (dan, random(4)+2,' ');
close(dan);
reset(dan);
 writeln ('----------------------------');
 writeln ('Все оценки: ');
 for i:=1 to 10 do
    begin
    read(dan,a[i]);
     write(a[i],'  ');
     s:=(s+a[i]);
     end;
     writeln();
     s:=s/10;
    writeln('----------------------------');
    writeln ('Средний балл: ',s);
   close(dan);
   writeln ('----------------------------');
   writeln ('Записать средний бал в отдельный файл? 1 - да, 2 - нет.');
   readln(x);
   case x of
 1: begin    rewrite (result);
       for i:=1 to 10 do
       write(result,a[i],' ');
       writeln(result,'Средний балл: ',s);
     close(result);   end;
 else writeln ('Программа завершена');   end;
end.
0
Arcor
4802 / 1804 / 159
Регистрация: 20.11.2009
Сообщений: 5,720
Записей в блоге: 1
01.04.2012, 23:41 #5
Цитата Сообщение от Nulled Посмотреть сообщение
Нужно создать файл и рандомно заполнить его числами (1 кнопка). Потом эти числа перемножить и вывести результат (2 кнопка).
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
const FileName = 'zahle.txt';
var
  Form1: TForm1;
  A: Array of Integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
    i: Integer;
begin
  Randomize;
  AssignFile(F, FileName);
  Rewrite(F);
  for i := 1 to 4 do
    Writeln(F, Random(5)+1);
   CloseFile(F);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var i: Integer;
    S: String;
    n: Integer;
    F: TextFile;
begin
  i := 0;
  n := 1;
  AssignFile(F, FileName);
  Reset(F);
  while not Eof(F) do
    begin
      SetLength(A, i+1);
      Readln(F, S);
      A[i] := StrToInt(S);
      n := n * A[i];
    end;
  Caption := IntToStr(n);
  CloseFile(F);
end;
 
end.
Добавлено через 3 часа 24 минуты
после 55 строчки нужно вставить
Delphi
1
i := i + 1;
2
01.04.2012, 23:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 23:41
Привет! Вот еще темы с ответами:

заполнить массив числами - Delphi
Подскажите пожалуйста.Как умножить каждый элемент массива???

Заполнить StringGrid числами от 1 до 90 - Delphi
как заполнить StringGrid от 01 до 90 тоесть 01,02,03 ... 10 , 11 и так далее

Неправильный результат работы с вещественными числами? - Delphi
Писал программу, вижу несходятся значения при операции. Давай искать ошибку пошагово. И тут вдруг неожиданно для себя обнаруживаю: ...

Заполнить ListBox случайными числами - Delphi
Помогите написать программу на языке Delphi. Заполнить ListBox случайными числами. Найти первый встречающийся элемент, сумма цифр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.