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

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 13.11.2006, 21:43   #1
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
Репутация: 10
По умолчанию нужна ваша помощь

Друзья, нужна помощь начинающему программисту.
Хочу написать на мой взгляд не очень сложную программку в Delphi 7.
Например есть файл созданный в блокноте - в нем 10 строк по 5 чисел от 1 до 10 (через пробел).
Их нужно сделать переменными а потом подсчитать какое число больше всего встречалось в этих строках.
Вроде всё
SashaB вне форума   Ответить с цитированием
Старый 14.11.2006, 00:28   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Адрес: Химки
Сообщений: 14,559
Репутация: 3001
По умолчанию

1) нужно считать данные из файла, самое простое загрузить в memo. например, memo1.lines.loadfromfile('1.txt'), теперь можно уже работать с memo.

memo1.lines[0] ...
Alar вне форума   Ответить с цитированием
Старый 14.11.2006, 01:08   #3
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
Репутация: 10
Радость

Цитата:
Сообщение от Alar Посмотреть сообщение
1) нужно считать данные из файла, самое простое загрузить в memo. например, memo1.lines.loadfromfile('1.txt'), теперь можно уже работать с memo.

memo1.lines[0] ...
Я взял для примера 3 переменных.
Вот часть проги:

var x,y,z:real;
begin
memo4.Clear;
memo1.lines.loadfromfile('1.txt');
memo2.lines.loadfromfile('2.txt');
memo3.lines.loadfromfile('3.txt');
x:=strtofloat(memo1.text);
y:=strtofloat(memo2.text);
z:=strtofloat(memo3.text);
.....
А если к примеру у меня будет не x,y,z а 100 таких переменных, то мне 100 файлов ***.txt создавать. ?
Или все таки есть способы попроще?
SashaB вне форума   Ответить с цитированием
Старый 14.11.2006, 07:31   #4
SuperVisor
Павел Сергеевич
Участник клуба
 
Регистрация: 05.11.2006
Адрес: г.Тюмень
Сообщений: 665
Репутация: 328

icq: 235938687 Отправить сообщение для SuperVisor с помощью AIM
По умолчанию

Цитата:
Сообщение от SashaB Посмотреть сообщение
А если к примеру у меня будет не x,y,z а 100 таких переменных, то мне 100 файлов ***.txt создавать. ?
Или все таки есть способы попроще?
Ты немножко непонял, Alar имел ввиду, что из ОДНОГО файла, в котором как ты сказал есть десять строк по пять чисел, нужно загрузить в Memo все строки с помощью команды memo1.lines.loadfromfile('Имя файла'), а уже после работать с Memo, а не с самим файлом.
__________________
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума   Ответить с цитированием
Старый 14.11.2006, 09:34   #5
zetrix
Delphi/C++/C#
Профессионал
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
Репутация: 626
По умолчанию

Зря так делаете. Ничего загружать не надо, надо напрямик считывать в массив. Напомню одну важную вещь: если из текстового файла читать число (read(f,i); //где f:textfile, а i:integer), тогда бедет считано ОДНО число (до первого пробела). Таким образом не надо будет парится с распознаванием чисел (отслеживать пробелы, переводить строку в число и прочее...)
Как делать понятно? (могу код написать только вечером)
zetrix вне форума   Ответить с цитированием
Старый 14.11.2006, 16:58   #6
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Зря так делаете. Ничего загружать не надо, надо напрямик считывать в массив. Напомню одну важную вещь: если из текстового файла читать число (read(f,i); //где f:textfile, а i:integer), тогда бедет считано ОДНО число (до первого пробела). Таким образом не надо будет парится с распознаванием чисел (отслеживать пробелы, переводить строку в число и прочее...)
Как делать понятно? (могу код написать только вечером)
Вот это то что надо.
Но я попробовал только что, ниче не выходит. Если не сильно тяжело то напишите код.

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Ты немножко непонял, Alar имел ввиду, что из ОДНОГО файла, в котором как ты сказал есть десять строк по пять чисел, нужно загрузить в Memo все строки с помощью команды memo1.lines.loadfromfile('Имя файла'), а уже после работать с Memo, а не с самим файлом.
Это уже мне понятно.
А вот как дальше с Memo работать?
Как этот набор строк и чисел преобразовать в массив!?

Последний раз редактировалось zetrix; 14.11.2006 в 19:39.
SashaB вне форума   Ответить с цитированием
Старый 14.11.2006, 17:09   #7
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Адрес: Химки
Сообщений: 14,559
Репутация: 3001
По умолчанию

Цитата:
Сообщение от SashaB Посмотреть сообщение
Это уже мне понятно.
А вот как дальше с Memo работать?
Как этот набор строк и чисел преобразовать в массив!?
может это гораздо сложнее просто я уже давно так работаю...
нужно написать цикл от 0 до count-1 строки и считывать посимволно новое число до пробела, потом strtoint, в массив. Делай как посоветует zetrix, это классическое pascal решение.
Alar вне форума   Ответить с цитированием
Старый 14.11.2006, 19:31   #8
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
может это гораздо сложнее просто я уже давно так работаю...
нужно написать цикл от 0 до count-1 строки и считывать посимволно новое число до пробела, потом strtoint, в массив. Делай как посоветует zetrix, это классическое pascal решение.
Может и сложнее но мне и таким способом хотелось бы попробовать.
Ну преобразовать числа в массив, при помощи цикла для меня не проблема, только если они будут стоять не через пробел, а каждое число на разной строке, а мне нужно что бы в строке было не одно число
А вот как считать посимвольно число до пробела?
SashaB вне форума   Ответить с цитированием
Старый 14.11.2006, 19:45   #9
SuperVisor
Павел Сергеевич
Участник клуба
 
Регистрация: 05.11.2006
Адрес: г.Тюмень
Сообщений: 665
Репутация: 328

icq: 235938687 Отправить сообщение для SuperVisor с помощью AIM
По умолчанию

все просто - объявляешь строчку для буфера, если находишь цифру - добывляешь ее в строку-буфер, натыкаешься на пробел - преобразовываешь буфер в переменную, потом буфер чистишь и продолжаешь цикл.
__________________
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума   Ответить с цитированием
Старый 14.11.2006, 19:58   #10
zetrix
Delphi/C++/C#
Профессионал
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
Репутация: 626
По умолчанию

Код:
var
  Form1: TForm1; a:array[1..5,1..10] of byte;//массив, куда всё будет сохранено

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var f:textfile; i,j:byte;
begin
assignfile(f,'111.txt'); //твой файл с числами
reset(f); //открытие файла для чтения
for i:=1 to 10 do
 begin
 for j:=1 to 5 do read(f,a[j,i]); //чтение чисел
 readln(f); //переход на следующую строчку
 end;
closefile(f); //закрытие файла
end;
Здесь написано просто чтение чисел, а какое чаще всего встречалось - это уже дело не сложное.
zetrix вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна ваша помощь! forsy Паскаль 2 19.05.2008 14:38
прога на С/С++(нужна ваша помощь) AlterEgo Помощь студентам 1 09.09.2007 18:41


10:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.