Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 29

Помощь с записями

20.04.2009, 16:14. Показов 824. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан список компьютеров на базе Intel ppentium processor с указанием их тактовой частоты и цены в $, например:
FP516 166 445
FP513 133 365
FPMM520 200 630
Fpx630 300 1530
Fpx623 233 1100

Найти наиболее дешевый компьтер с тактовой частотой, не ниже 200 MHz, и вывести тактовую частоту и цену.
Разработать программу решения этой задачи с использованием записей,вводом исходных данных из файла,содержащего не менее 8 записей, дополнением этого файла тремя новыми записями с клавиатуры на этапе выполнения программы и выводов результатов в файл.Имены входного и выходного фалов должны совпадать с именем программы,но иметь расширения '.in' и '.out' вместо '.pas'.

Я написал прогу но он выдает: Invalid numeric format и указывает на:
readln(inp,m[count].hz,m[count].price);

вот прога:
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
37
38
39
40
41
42
43
44
45
46
program n_3;
uses crt;
type zap=record
           name:string[24];
           hz:integer;
           price:integer;
         end;
var inp,out:text;  z:ZAP; k:byte; 
  min:zap; m:array[1..30] of zap; i,count:integer;
begin
  clrscr;
  assign (inp, 'd:\n_4.in');
  assign (out, 'd:\n_34.txt');
  append (inp);
  for k:=1 to 2 do
  begin
    writeln ('Name');
    readln (m[count].name);
    writeln ('Chastota');
    readln (m[count].hz);
    writeln ('Price');
     readln(m[count].price);
    writeln (inp, m[count].name);
    write (inp,m[count].hz,' ',m[count].price);
    writeln (inp);
  end;
close(inp);
count:=0;
reset(inp);
       while not eof(inp) do
        begin
      inc(count);
            read(inp,m[count].name);
              readln(inp,m[count].hz,m[count].price);
               end;
min:=m[i];
for i:=1 to count do
                   begin
                     if m[i].hz>=200 then
                       if m[i].price<min.price then min:=m[i]
                         else if (m[i].price=min.price) and  (m[i].hz>min.hz) then min:=m[i];
                          end;
rewrite(out);
                            writeln(out,min.name,' ',min.hz,' $',min.price);
                             close(out);
                             end.
Помогите пожалуйста а то как то не получается исправить самому.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2009, 16:14
Ответы с готовыми решениями:

Работа с записями
• создайте программу-приложение для работы с массивом записей, состоящих из заданных полей &lt;Фамилия, имя&gt;, &lt;отдел&gt;,...

Файл с записями
задача из учебника Пильщикова.

Работа с записями
Доброго времени суток. Осваиваю записи в паскале. Есть задача. Написать программу с вводом, просмотром и редактированием данных в файле....

6
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.04.2009, 16:38
readln(inp,m[count].hz,m[count].price);
У Вас текстовый файл и читать записи из него, нельзя, кстати как Вы написали, и из типизированного файла не прочитаете.
Из текстового файла читают так.
Если в массив.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var n,t,c:integer;
     s,s1:string;
...............................
n:=0;
wile not eof(inp) do
  begin
    readln(inp,s);{читаем строку}
    n:=n+1;{считаем}
    m[n].name:=copy(s,1,pos(' ',s)-1);{первое слово до пробела}
    delete(s,1,pos(' ',s));{удаляем вместе с пробелом}
    s1:=copy(s,1,pos(' ',s)-1);{второе слово}
    val(s1,t,c);{преобразуем в число}
    m[n].hz:=t;{в запись}
    delete(s,1,pos(' ',s));{удаляем}
    val(s,t,c);{преобразуем в число остаток строки, третье слово}
    m[n].price:=t;{в запись}
  end;
0
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 29
20.04.2009, 16:46  [ТС]
Я заменил
Pascal
1
2
3
4
5
6
7
count:=0;
while not eof(inp) do
begin
inc(count);
read(inp,m[count].name);
readln(inp,m[count].hz,m[count].price);
end;
на
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 n:=0;
while not eof(inp) do
  begin
    readln(inp,s);{читаем строку}
    n:=n+1;{считаем}
    m[n].name:=copy(s,1,pos(' ',s)-1);{первое слово до пробела}
    delete(s,1,pos(' ',s));{удаляем вместе с пробелом}
    s1:=copy(s,1,pos(' ',s)-1);{второе слово}
    val(s1,t,c);{преобразуем в число}
    m[n].hz:=t;{в запись}
    delete(s,1,pos(' ',s));{удаляем}
    val(s,t,c);{преобразуем в число остаток строки, третье слово}
    m[n].price:=t;{в запись}
  end;

она работает,но в выходной файл ничего не выводит ,а что теперь сделать???
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.04.2009, 16:54
но в выходной файл ничего не выводит ,
А при чем здесь чтение записи из текстового файла и ввод в файл?
Ввод в файл делается как раз отдельно и наоборот.
Pascal
1
2
3
4
5
6
7
8
9
for i:=1 to n do
  begin
    write(out,z[i].name,' ');{выводим в файл назв. с пробелом}
    str(z[i].hz,s);{преобразуем в строку первое число}
    write(out,s,' ');{выводим в туже строку с пробелом}
    str(z[i].price,s);{преобразуем второе число}
    write(out,s);{в строку, уже без пробела-последнее}
    writeln(out,'');{на новую строку}
  end;
0
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 29
20.04.2009, 17:41  [ТС]
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
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
62
63
64
65
66
67
68
69
70
program n_3;
uses crt;
type zap=record
           name:string[24];
           hz:integer;
           price:
           integer;
         end;
var inp,out:text;  z:ZAP; k:byte; 
  min:zap; m:array[1..30] of zap; i,c,count:integer;n,t:integer;
     s,s1:string;
 
begin
  clrscr;
  assign (inp, 'd:\n_4.in');
  assign (out, 'd:\n_34.txt');
  rewrite (out);
  append (inp);
  for k:=1 to 2 do
  begin
    writeln ('Name');
    readln (m[count].name);
    writeln ('Chastota');
    readln (m[count].hz);
    writeln ('Price');
     readln(m[count].price);
    writeln (inp, m[count].name);
    write (inp,m[count].hz,' ',m[count].price);
    writeln (inp);
  end;
 
  close(inp);
 
      reset(inp);
      n:=0;
while not eof(inp) do
  begin
    readln(inp,s);{читаем строку}
    n:=n+1;{считаем}
    m[n].name:=copy(s,1,pos(' ',s)-1);{первое слово до пробела}
    delete(s,1,pos(' ',s));{удаляем вместе с пробелом}
    s1:=copy(s,1,pos(' ',s)-1);{второе слово}
    val(s1,t,c);{преобразуем в число}
    m[n].hz:=t;{в запись}
    delete(s,1,pos(' ',s));{удаляем}
    val(s,t,c);{преобразуем в число остаток строки, третье слово}
    m[n].price:=t;{в запись}
  end;
 
                 min:=m[i];
 
                  for i:=1 to count do
                   begin
                     if m[i].hz>=200 then
                       if m[i].price<min.price then min:=m[i]
                         else if (m[i].price=min.price) and  (m[i].hz>min.hz) then min:=m[i];
                          end;
 
                           rewrite(out);
                            for i:=1 to n do
  begin
    write(out,z[i].name,' ');{выводим в файл назв. с пробелом}
    str(z[i].hz,s);{преобразуем в строку первое число}
    write(out,s,' ');{выводим в туже строку с пробелом}
    str(z[i].price,s);{преобразуем второе число}
    write(out,s);{в строку, уже без пробела-последнее}
    writeln(out,'');{на новую строку}
  end;
                             close(out);
                             end.
вот вся программа с вашими дополнениями,если я правильно сделал,но теперь он указывает на z[i] и говорит invalid qualifier?
если можно еще чуть-чуть подправить а то я немного во всем этом запутался.

Добавлено через 15 минут 12 секунд
теперь просто мне бы вывести нужную информацию в файл.

Добавлено через 18 минут 38 секунд
или вот еще вариант:
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
37
38
39
40
41
42
program n_3;
uses crt;
type zap=record
           name:string[24];
           hz:integer;
           price:
           integer;
         end;
var inp,out:text;  z:ZAP; k,i,m:byte;   min:zap;
begin
  clrscr;
  assign (inp, 'd:\n_4.in');
  assign (out, 'd:\n_34.txt');
  rewrite (out);
  append (inp);
  for k:=1 to 2 do
  begin
    writeln ('Name');
    readln (z.name);
    writeln ('Chastota');
    readln (z.hz);
    writeln ('Price');
     readln(z.price);
    writeln (inp, z.name);
    write (inp,z.hz,' ',z.price);
    writeln (inp);
  end;
  reset(inp);
 
  repeat
  read(inp,z.name);
  readln(inp,z.hz,z.price);
  min:=z;
 
  if z.hz>=200 then begin
  if z.price<min.price then min:=z
    else if (z.price=min.price) and  (z.hz>min.hz) then min:=z;
       end;
          until eof(inp);
               writeln(out,min.name,' ',min.hz,' $',min.price);
                     close(out);   close(inp);
                     end.
но в данном случае он выводит в файл не искомый элемент а то что я ввел последним с клавиатуры????????
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.04.2009, 17:45
Распутывайся.
1
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 29
20.04.2009, 17:54  [ТС]
Puporev
эт я понял а вот со вторым моим вариантом не подскажешь?

Добавлено через 7 минут 57 секунд
Все сделал,правда по-другому,но огромное спасибо за помощь и потраченное на мою прогу время!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2009, 17:54
Помогаю со студенческими работами здесь

Работа с записями
В общем, на втором курсе у нас сейчас практика по Паскаль, его толком не учили, время поджимает, а написать программу никак не получается,...

Работа с записями
Дан список имен и фамилий мужчин и женщин, их рост. Составить программу, которая будет определять имя самого высокого человека.

Работа с записями
Мое задание состоит в том, чтобы считать таблицу из файла, преобразовать и опять записать. Таблица: Название банка 2004 2005 2005 СБ...

Работа с записями
Составить ведомость экспортируемых товаров, включив следующие данные: страна, импортируемая товар; объем поставляемой партии (в штуках)....

2 страницы с записями
Приветствую. Как сделать 2 независимые страницы с разными записями? Мол на главной странице выводятся новости, а на 2 странице нужные мне...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru