Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 14.02.2013, 01:46   #1 (permalink)
tane
Member
 
Регистрация: 13.02.2013
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 68
По умолчанию Проверьте, пожалуйста, программу. Паскаль

Задача:
сведения об автомобиле состоят из его марки, номера, цвета, фамилии владельца.Подсчитать количество автомобилей заданной марки.

type vedomost=record
marka:string;
nomer:integer;
color:string;
familia:string;
end;
var
danue:array[1..3] of vedomost;
i,m:integer;
k:string;

begin
for i:=1 to 3 do
with danue[i] do
begin
writeln('Марка-'); readln(marka);
writeln('Номер-'); readln(nomer);
writeln('Цвет-');readln(color);
writeln('Фамилия-');readln(familia);
end;

writeln('Марка машины для подсчета');readln(k);
for i:=1 to 3 do
begin
with danue[i] do
if marka=k then
begin
writeln(marka);
end;
end;
readln;
end.
tane вне форума   Ответить с цитированием

Старый 14.02.2013, 01:46
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, просмотрите внимательно аналогичные топики

Проверьте, пожалуйста, печатную плату
Проверьте, пожалуйста

Старый 14.02.2013, 15:33   #2 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

Данные надо вводить или уже есть? И что за дебилизм с "for i:=1 to 3 do"??? Это в смысле, если ты вводишь, то не более трех машинок? А 100? А 101?
Замечание:
Сударь, а без хамства и нарочито оскорбительно-пренебрежительного тона никак? Просто объяснить начинающему, подсказать, поправить, помочь? Или самоутверждаемся? Ну что же - получите замечание. В качестве первого предупреждения.

Модератор.
Debianer вне форума   Ответить с цитированием
Старый 14.02.2013, 19:43   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Debianer Посмотреть сообщение
Данные надо вводить или уже есть?
"Имеющий глаза да увидит"... Если бы Вы дали себе труд внимательно посмотреть код, вместо того, чтобы демонстрировать, какой Вы крутой программист, то, вне всякого сомнения, узрели бы блок ввода данных и тогда отпала бы нужда в данном вопросе.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.02.2013, 20:02   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от tane Посмотреть сообщение
Проверьте пожалуйста программу, Паскаль
В целом правильно и грамотно, но несколько замечаний.
1. Несмотря на недопустимо-хамский тон, по сути Debianer прав в том смысле, что полное число машин лучше задать в виде константы, которую легко можно менять при желании.
2. Подсказки при вводе лучше давать без перевода строки и с пробелом в конце. Красивее.
3. В задании требуется подсчитать количество машин данной марки, а не выводить несколько раз название этой марки.
4. Если оператор (в частности, if..then) действует на ОДИН операнд, то операторные скобки begin..end ставить не обязательно. Можно, но не нужно.

Итого, с учетом сказанного:

Код:
const
 N=3;

type  
 vedomost=record
           marka:string;
           nomer:integer;
           color:string;
           familia:string;
          end;

var
  danue:array[1..N] of vedomost;
  i,m,Q:integer;
  k:string;

begin
 for i:=1 to N do
  with danue[i] do
   begin
    write('Марка - '); 
    readln(marka);
    write('Номер - '); 
    readln(nomer);
    write('Цвет - ');
    readln(color);
    write('Фамилия - ');
    readln(familia);
   end;
  
 writeln;
 write('Марка машины для подсчета - ');
 readln(k);

 Q:=0;
 for i:=1 to N do
  if danue[i].marka=k then Inc(Q);
 writeln(Q,' машин');
 readln;
end.
Извините, не тестировал. Вы уж сами.
Vladimir_S вне форума   Ответить с цитированием
Старый 19.02.2013, 03:42   #5 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

За тон прошу прощения, погорячился
Debianer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.02.2013, 08:28   #6 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

И еще один совет: не задавайте границы массива, лучше воспользуйтесь динамическим. Насколько я помню, в турбопаскале динамических массивов не было, вместо них использовали списки.
Погуглив, нарыл достаточно информации по этому. Просто при использовании динамического массива вы отвязываетесь от предельного размера данных, т.е. можно ввести и три машинки, и 133. Организовать данную работу можно через указатели и GetMem. Считаю, что так будет наиболее правильно, жизненно и соответствовать условиям задачи.
ЗЫ: да, код болучится более сложным
Debianer вне форума   Ответить с цитированием
Старый 19.02.2013, 08:31   #7 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
"Имеющий глаза да увидит"... Если бы Вы дали себе труд внимательно посмотреть код, вместо того, чтобы демонстрировать, какой Вы крутой программист, то, вне всякого сомнения, узрели бы блок ввода данных и тогда отпала бы нужда в данном вопросе.
Код я посмотрел. Вопрос про ввод данных возник не из кода, а из условия задачи - там неявно, вводятся ли данные, берутся они из файла, потока, базы данных... Отсюда и вопрос возник, нужен ли ввод или нет
Debianer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

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




Часовой пояс GMT +4, время: 09:46.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.