Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 19.01.2012
Сообщений: 23

Записи с модулями

19.01.2012, 12:28. Показов 625. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание
1. Создать массив записей в соответствии с заданной структурой. Количество записей не менее 10. Определить количество товаров, у которых одна страна поставщик (страна поставщик задается произвольно).


Программы
Главная
Pascal
1
2
3
4
5
6
7
8
uses Program4, Program1;
var sum:integer;
    country_v: string;
begin
vvoda (bas);
poisk (bas, sum);
vivoda (sum);
end.
Модуль
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
unit Program1;
Interface
const n=3;
type
str=record
          firm:string;
         price: integer;
        koltov: integer;
          name: string;
       country:string;
          date:record
                 day:1..31;
               month:1..12;
                year:1900..2012;
                end;
          end;
base=array[1..n] of str;
var bas:base;
Implementation
 
end.
Модуль2
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
unit Program4;
Interface
         uses program1;
procedure vvoda (var bas:base);
procedure poisk (var bas:base; var sum:integer);
procedure vivoda (var sum:integer);
implementation
procedure vvoda (var bas:base);
var i:byte;
begin
for i:= 1 to n do begin
writeln('Фирма номер ',i);
 
writeln('Название фирмы: ');
readln(bas[i].firm);
 
writeln('Цена за товар: ');
readln(bas[i].price);
 
writeln('Количество товара: ');
readln(bas[i].koltov);
 
writeln('Наименование товара: ');
readln(bas[i].name);
 
writeln('Страна поставщик: ');
readln(bas[i].country);
 
writeln('Дата. День: ');
readln(bas[i].date.day);
writeln('Дата. Месяц: ');
readln(bas[i].date.month);
writeln('Дата. Год: ');
readln(bas[i].date.year);
end;
end;
procedure poisk (var bas:base; var sum:integer);
var     i:byte;
country_v: string;
begin
read(country_v);
for i:=1 to n do
if bas[i].country = country_v then sum:=sum+bas[i].koltov;
end;
procedure vivoda (var sum:integer);
begin
writeln ('Колличество товаров, у которых одна страна поставщик:', sum);
end;
end.

Подсчитывание (процедура поиска) происходит неверно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2012, 12:28
Ответы с готовыми решениями:

Ошибка в программе с модулями
Даны матрицы A и B. Если максимальный элемент матрицы A больше максимального элемента матрицы B, то в матрицу A вставить второй столбец,...

работа с модулями crt и graph
Построить произвольные сектора эллипсов, закрашенных случайным цветом и с границами жёлтого цвета

Создать базу данных с авторизацией и модулями
Здравствуйте! Нужно сделать базу данных с авторизацией и модулями. А)Авторизация Дальше идут модули: 1)Администратор действия: ...

3
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
19.01.2012, 13:02
Ви5Кторинка, программа работает правильно, возможно, просто при вводе данных сбиваешься...
чтобы этого избеать, в модуль поиска стоит добавить запрос, чтобы было понятно, что необходимо ввести страну, так, например
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
unit Program4;
 Interface
 uses program1;
 procedure vvoda (var bas:base);
 procedure poisk (var bas:base; var sum:integer);
 procedure vivoda (var sum:integer);
 implementation
 procedure vvoda (var bas:base);
 var i:byte;
 begin
 for i:= 1 to n do begin
 writeln('Фирма номер ',i);
 
 writeln('Название фирмы: ');
 readln(bas[i].firm);
 
 writeln('Цена за товар: ');
 readln(bas[i].price);
 
 writeln('Количество товара: ');
 readln(bas[i].koltov);
 
 writeln('Наименование товара: ');
 readln(bas[i].name);
 
 writeln('Страна поставщик: ');
 readln(bas[i].country);
 
 writeln('Дата. День: ');
 readln(bas[i].date.day);
 writeln('Дата. Месяц: ');
 readln(bas[i].date.month);
 writeln('Дата. Год: ');
 readln(bas[i].date.year);
 end;
 end;
 procedure poisk (var bas:base; var sum:integer);
 var i:byte;
 country_v: string;
 begin
 writeln('Укажите страну для поиска: ');
 read(country_v);
 for i:=1 to n do
 if bas[i].country = country_v then sum:=sum+bas[i].koltov;
 end;
 procedure vivoda (var sum:integer);
 begin
 writeln ('Êîëè÷åñòâî òîâàðîâ, ó êîòîðûõ îäíà ñòðàíà ïîñòàâùèê: ', sum);
 end;
 end.
и не забудь, что модули надо сохранить под теми именами, под которыми они заявлены в главной программе, и в той же папке, где и основная программа.
У меня в 10 запусках выдало правильный ответ...
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.01.2012, 13:22
В первом модуле просто поправь, не хорошо так делать
type
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
tov=record //желательно не давать идентификаторам имена стандартных процедур и функций
    firm:string;
    price: integer;
    koltov: integer;
    name: string;
    country:string;
    date:record
         day:1..31;
         month:1..12;
         year:1900..2012;
         end;
    end;
base=array[1..n] of tov;
Во втором модуле исправь. Оператор var в параметрах ставится только перед параметром который в подпрограмме изменяется.
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
unit Program4;
Interface
         uses program1;
procedure vvoda (var bas:base);
procedure poisk (bas:base; var sum:integer);
procedure vivoda (sum:integer);
implementation
procedure vvoda (var bas:base);
var i:byte;
begin
for i:= 1 to n do begin
writeln('Фирма номер ',i);
 
writeln('Название фирмы: ');
readln(bas[i].firm);
 
writeln('Цена за товар: ');
readln(bas[i].price);
 
writeln('Количество товара: ');
readln(bas[i].koltov);
 
writeln('Наименование товара: ');
readln(bas[i].name);
 
writeln('Страна поставщик: ');
readln(bas[i].country);
 
writeln('Дата. День: ');
readln(bas[i].date.day);
writeln('Дата. Месяц: ');
readln(bas[i].date.month);
writeln('Дата. Год: ');
readln(bas[i].date.year);
end;
end;
procedure poisk (bas:base; var sum:integer);
var     i:byte;
country_v: string;
begin
writeln('Введите название страны для поиска:');
read(country_v);
for i:=1 to n do
if bas[i].country = country_v then sum:=sum+bas[i].koltov;
end;
procedure vivoda (sum:integer);
begin
writeln ('Количество товаров, у которых одна страна поставщик:', sum);
end;
end.
Пару раз проверил, вроде правильно считает.
1
1 / 1 / 0
Регистрация: 19.01.2012
Сообщений: 23
19.01.2012, 13:44  [ТС]
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.
Спасибо поняла
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2012, 13:44
Помогаю со студенческими работами здесь

Заменить отрицательные элементы массива их модулями
Составьте программу,которая организует ввод массива a с клавиатуры, затем преобразовывает массив, заменяя все отрицательные элементы их...

Заменить отрицательные элементы массива их модулями
Составьте программу,которая организует ввод массива a случайными целыми числами в диапазоне от 1 до 10, затем преобразовывает массив,...

Работа с модулями и файлами прямого доступа
Привет! Люди добрые, помогите пожалуйста нарисовать блок-схему для отдельной процедуры, входящей в главную программу. Текст процедуры...

Отрицательные элементы заменить их модулями, а положительные квадратами
1.Отрицательные элементы заменить их модулями, а положительные квадратами.

Заменить отрицательные элементы линейного массива их модулями
Заменить отрицательные элементы линейного массива их модулями, не пользуясь стандартной функцией вычисления модуля. Подсчитать количество...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru