Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2010, 13:11   #1
zzzetka
Пользователь
 
Аватар для zzzetka
 
Регистрация: 08.08.2010
Сообщений: 21
По умолчанию Определить последнее одиннадцатое число в строчке из файла

Ребята, Помогите с очередной проблемой.... Текстовый файл состоит из 11 столбцов и очень-очень много строк, я их даже посчитать с помощью Excel-я не могу. В строках и столбцах вещественные числа. Для читывания этого фала я не могу задать двумерный массив. А вообще задание состоит в следующем. Пользователь задает определенные значения (первые 10), по которым надо определить последнее одиннадцатое число в этой строчке! т.е. нужно сравнить первое число в строчке с задаваемым, если совпадает, то второе и т.д. А если не совпадает, то переходить к следующей строке... и так до конца файла, пока все 10 не совпадут с задаваемыми числами. Вот.
zzzetka вне форума Ответить с цитированием
Старый 10.08.2010, 13:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Покажи пару строк из файла, какие там разделители, как выглядят и пр.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2010, 13:46   #3
zzzetka
Пользователь
 
Аватар для zzzetka
 
Регистрация: 08.08.2010
Сообщений: 21
По умолчанию

Цитата:
3.00E-001 1 9.00E+001 0.000E+000 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.930000E-001
3.00E-001 1 9.00E+001 1.500E+001 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.932000E-001
3.00E-001 1 9.00E+001 3.000E+001 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.923000E-001
3.00E-001 1 9.00E+001 4.500E+001 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.934000E-001
3.00E-001 1 9.00E+001 6.000E+001 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.922000E-001
3.00E-001 1 9.00E+001 7.500E+001 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.914000E-001
3.00E-001 1 9.00E+001 9.000E+001 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.925000E-001
3.00E-001 1 9.00E+001 1.050E+002 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.924000E-001
3.00E-001 1 9.00E+001 1.200E+002 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.924000E-001
3.00E-001 1 9.00E+001 1.350E+002 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.922000E-001
3.00E-001 1 9.00E+001 1.500E+002 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.938000E-001
3.00E-001 1 9.00E+001 1.650E+002 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.944000E-001
3.00E-001 1 9.00E+001 1.800E+002 0.0000E+000 1.0000E+002 0.0000E+000 5.00E-001 1.00E+000 3.000E+002 5.931000E-001
3.00E-001 1 9.00E+001 0.000E+000 0.0000E+000 1.0000E+002 1.5000E+001 5.00E-001 1.00E+000 3.000E+002 5.683000E-001
3.00E-001 1 9.00E+001 1.500E+001 0.0000E+000 1.0000E+002 1.5000E+001 5.00E-001 1.00E+000 3.000E+002 5.678000E-001
3.00E-001 1 9.00E+001 3.000E+001 0.0000E+000 1.0000E+002 1.5000E+001 5.00E-001 1.00E+000 3.000E+002 5.689000E-001
Код:
for i:=1 to 11 do
   begin
    read(fil, stroka[i]);

    if (stroka[1]=lam) and
       (stroka[2]=Sm) and
       (stroka[3]=Hsun) and
       (stroka[4]=Az) and
       (stroka[5]=Ho) and
       (stroka[6]=Hpr) and
       (stroka[7]=alfa) then

       Edt4.Text:=FloatToStr(stroka[11])
     else
      Edt4.Text:=('net'); 
   end;
Вот таким образом он читает только одну первую строку и выдает последнее число. А как перейти от первой строчке к остальным, если хотя бы одно из условий не выполняется?

Последний раз редактировалось Stilet; 10.08.2010 в 14:30.
zzzetka вне форума Ответить с цитированием
Старый 10.08.2010, 14:37   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

попробуй так:
Код:
while not(eof(fil)) do
begin
     for i:=1 to 11 do
     read(fil, stroka[i]);
     if (stroka[1]=lam) and
        (stroka[2]=Sm) and
        (stroka[3]=Hsun) and
        (stroka[4]=Az) and
        (stroka[5]=Ho) and
        (stroka[6]=Hpr) and
        (stroka[7]=alfa) then
        begin
             Edt4.Text:=FloatToStr(stroka[11])
             break
        end;
     else
         begin    
              Edt4.Text:=('net');
         end; 
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 10.08.2010, 15:42   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от zzzetka Посмотреть сообщение
Для читывания этого фала я не могу задать двумерный массив.
Да тут достаточно одномерного динамического массива. Подойдет, например, TStringList...
Затем парсинг строки и сравнение с заданными значениями = результат...
А если строка четко форматирована, т.е. позиции значений имеют определенные постоянные величины, то возможно и применение функции Pos()....
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 10.08.2010 в 15:52.
Grag вне форума Ответить с цитированием
Старый 10.08.2010, 16:17   #6
zzzetka
Пользователь
 
Аватар для zzzetka
 
Регистрация: 08.08.2010
Сообщений: 21
По умолчанию

Hacker19_90 !
Огромное спасибо! Все получилось! Я такой функции break даже не знала, если честно! Спасибо, спасибо, спасибо!!!!!

А что такое парсинг строки тем более не знаю

Последний раз редактировалось Stilet; 10.08.2010 в 17:26.
zzzetka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить, является ли число палиндромом Princesse JavaScript, Ajax 9 02.10.2009 00:23
Visual Basic последнее min число из вводимых чисел! kenny91 Помощь студентам 10 06.06.2009 17:16
определить число дисководов на Assembler Елена2008 Помощь студентам 3 23.11.2008 21:20
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43
Определить n-ое число Фибоначчи - Рекурсия Xeon332 Помощь студентам 3 09.01.2008 19:01