Ответить Создать тему

Задача, Паскаль , грубо говоря курсач

Теги: PASCAL
Basisd
post May 24 2011, 00:41 
Отправлено #1


Продвинутый

Сообщений: 134



Здравствуйте. Помогите пожалуйста отредактировать код (он не мой) по условию задачи:

Цитата
Известно количество совершенных преступленний в каждом из 5 городов в текущем и предыдущем годах. Определить город(города), в котором количество преступлений увеличилось в максимальное число раз (указать, во сколько раз).Определить, уменьшилось или увеличилось количество преступлений по всем городам и на сколько %.Название городов известны.


Исходный код
program p1;
var
m,n: integer;
i:integer;
Crimes09,Crimes08:array [1..25] of Integer;
Town:array [1..5] of Integer;
begin
read (n);
m:=1;
for i:=2 to n do if Crimes09[i]/Crimes08[i]>Crimes09[m]/Crimes08[m] then m:=i;
WriteLn('Maximum crime rate increase of ',Crimes09[m]/Crimes08[m]: 5:2,' times, has been observed in ',Town[m],'.');
end.


Заранее большое спасибо. Помогите пожалуйста, очень надо.

Сообщение отредактировал Snowm@n - May 24 2011, 10:44
Profile CardPM
  0/0  
Наблюдатель
post May 24 2011, 09:53 
Отправлено #2


Активный

Сообщений: 10 851



Змечания навскидку:
1) Массивы Crimes09,Crimes08 целесообразно делать размером 5 - одинаково с Town.
2) Массив Town должен по смыслу задачи содержать названия городов, а он имеет тип Integer. Что свидетельствует о ... ну, впрочем, мы не в учебном заведении...
3) Что такое n? То есть, не что такое, а зачем его вводить?
4) Отсутствует ввод данных (Crimes09,Crimes08). Видимо, просто при копировании строчук после read(n) пропустили wink.gif
5) Алгоритм решения задачи реализовн правильно, но нет защиты от деления на 0 (может ведь быть 0 в каком-то городе!).

Сообщение отредактировал Наблюдатель - May 24 2011, 09:54
Profile CardPM
  0/0  
edge
post May 31 2011, 23:52 
Отправлено #3


Активный

Сообщений: 20 585



Если это точная версия рабочей программы, то она не соответствует заданию...

кроме упомянутых выше замечаний могу добавить:
1. городов может быть несколько, имеющих одинаковое максимальное значение, следовательно лучше создать отдельно массив, где будут находится расчеты Crimes09[i]/Crimes08[i] для каждого города отдельно...а потом в цикле вывести все города, у которых количество преступлений равно максимальному количеству...

2. n, я так понимаю должно равняться 5, (а если пользователь введет больше)?
3. И почему проверка начинается со второго города i:=2?

4. Если уж говорить о типах, то m, n, i должны быть byte (память она когда-нибудь кончается)...

Ну, еще не написан код для реализации последнего условия задачи...


--------------------
Каждый из нас бывает дураком по крайней мере 5 минут в день; мудрость заключается в том, чтобы не превысить лимит!
Profile CardPM
  0/0  
Наблюдатель
post Jun 1 2011, 08:06 
Отправлено #4


Активный

Сообщений: 10 851



Цитата(edge @ Jun 1 2011, 00:52)
3. И почему проверка начинается со второго города i:=2?
*
Потому что данные по индексу i сравниваются с данными по индексу m, который начинается с 1.
Profile CardPM
  0/0  
edge
post Jun 1 2011, 08:30 
Отправлено #5


Активный

Сообщений: 20 585



Цитата(Наблюдатель @ Jun 1 2011, 09:06)
Потому что данные по индексу i сравниваются с данными по индексу m, который начинается с 1.
*

логично...

--------------------
Каждый из нас бывает дураком по крайней мере 5 минут в день; мудрость заключается в том, чтобы не превысить лимит!
Profile CardPM
  0/0  

ОтветитьTopic Options
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
Быстрый ответ
Кнопки кодов
 Расширенный режим
 Нормальный режим
    Закрыть все тэги


Открытых тэгов: 
Введите сообщение
Смайлики
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
         
Показать все

Опции сообщения