2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 20:15 


05/11/17
4
Проверьте, пожалуйста, программу. Условие задачи: составьте программу подсчета таких строк двухмерного массива, что суммы элементов этих строк положительны. Язык паскаль.
У меня не работает паскаль, поэтому я не могу проверить, работает она или нет.
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
program z7;
type mas = array [1..50,1..50] real;
var a: mas1;
con, М: real;
procedure input (k: byte; var c: mas1);
var i, j: byte;
begin
    for i: = 1 to k do
   for j: = 1 to k do
begin
     write( '[', i, '', j '] =');
ReadLn (с [I, J]);
end;
end;
procedure print (k: byte; c: mas1);
var i, j: byte;
begin
    for i: = 1 to k do
 begin
     for j: = 1 to k do
  write(с [I, J]: 7: 2);
WriteLn;
end;
end;
procedure count (k: byte; c: mas1, var s, m: real);
var i, j: byte;
begin
    s: = 0;
for i: = 1 to k do
    if c [i, j]> 0, то n: = m + 1;
if m <0, то s: = s + 1;
end;
end;
begin
write ( 'n =');
    read (n);
   input (n, а);
    print (n, а);
    count (n, а, con, М);
    writeln ('количество строк, в которых сумма строк положительна =', con: 7: 2);
end.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 21:07 
Заслуженный участник


09/05/12
25179
Во второй строчке есть одна синтаксическая ошибка и одна смысловая. Оператор присваивания пишется как :=, без пробела посередине. В 11-й строчке не хватает запятой. В 30-й и 31-й строчках вообще какие-то последствия перевода. :-) Ну и все заполнено посторонними символами (Вы ее, что, в каком-нибудь Word'е набирали?).

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 21:15 


05/11/17
4
Спасибо)

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 21:19 
Аватара пользователя


29/03/12
2427
Нигредо
VZAImode в сообщении #1262546 писал(а):
У меня не работает паскаль

В каком смысле не работает? Не вышел на работу?

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 21:21 


05/11/17
4
В смысле, у меня его нет на ноутбуке, а онлайн, ни один компилятор не работает.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 21:34 
Аватара пользователя


29/03/12
2427
Нигредо
Этот не подойдёт?

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 22:34 
Аватара пользователя


29/05/17
808
VZAImode в сообщении #1262546 писал(а):
У меня не работает паскаль, поэтому я не могу проверить, работает она или нет.

Здесь можно попробовать:

http://rextester.com/l/pascal_online_compiler

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение05.11.2017, 23:58 
Заслуженный участник


20/08/14
11867
Россия, Москва
Меня особо порадовало if m <0, то s: = s + 1;. :D

Mental, спасибо за интересную ссылку, удобно проверять несложные программки.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 13:16 


05/11/17
4
Спасибо. Помогли)

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 15:38 
Аватара пользователя


27/02/12
3942

(Оффтоп)

Dmitriy40 в сообщении #1262616 писал(а):
Меня особо порадовало if m <0, то s: = s + 1;

Это восхитительно! Особенно запятая. "then" без неё обойдется, но перед "то" - сам бог велел.
Я на вашем месте непременно отправил бы в "Цитатник". :-)

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 15:58 
Заслуженный участник


20/08/14
11867
Россия, Москва
Интересно что никто так и не указал автору что процедура count() решает (если вообще решает хоть что-то вразумительное) вовсе не заявленную задачу.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 16:39 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Dmitriy40 в сообщении #1262782 писал(а):
Интересно что никто так и не указал автору что процедура count() решает (если вообще решает хоть что-то вразумительное) вовсе не заявленную задачу.
После вашего поста собрался с духом и прочитал таки текст программы.
В процедуре count мы имеем две неинициализированные переменные и бессмысленный цикл, повторяющий одно и то же k раз. И никакого форматирования кода. И почему переменная con называется? Привет от французов? :mrgreen:

-- 06.11.2017, 17:40 --

Вообще, как по мне, такой код надо в Карантин сносить.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 18:48 
Заслуженный участник


20/08/14
11867
Россия, Москва
rockclimber в сообщении #1262801 писал(а):
В процедуре count мы имеем две неинициализированные переменные
Не совсем так, если разбирать подробно, не иницилиазирована лишь j, а вот n - не объявлена вообще. И при компиляции будет не предупреждение, а ошибка. С большой вероятностью это всего лишь опечатка и речь про переменную m.
Но даже если поправить опечатку с n и даже добавить забытый второй цикл по j, процедура всё равно будет решать вовсе не заявленную задачу! В этом и соль. Что даже после исправления ошибок исходная задача так и останется нерешённой. :mrgreen:
Ещё порадовал подсчёт количества в real переменной. Как-то это непривычно ... хотя и будет работать, по крайней мере до примерно триллиона значений.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 19:14 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Dmitriy40 в сообщении #1262828 писал(а):
Не совсем так, если разбирать подробно, не иницилиазирована лишь j
m тоже не инициализирована. Точнее, в нее передается значение переменной M, которая неинициализирована.

Dmitriy40 в сообщении #1262828 писал(а):
а вот n - не объявлена вообще.
Да, это я пропустил. Но там все еще прекраснее, оказывается: есть n в основном блоке, ее значение передается в переменную k процедуры count, а там уже используется и k, и n.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 19:56 
Заслуженный участник


20/08/14
11867
Россия, Москва
rockclimber в сообщении #1262836 писал(а):
Точнее, в нее передается значение переменной M, которая неинициализирована.
А, это да. Но это уже не относится к самой процедуре count. ;-)

rockclimber в сообщении #1262836 писал(а):
есть n в основном блоке,
Э, нету, она не объявлена. Хотя и использована.
Если её объявить (причём выше кода count()!), то да, она будет использована в count. Но при этом наступят другие грабли: если n объявить как вещественную, то произойдёт ошибка при вызове count (вещественная n не сможет преобразоваться к байтовой k), если же n объявить целочисленной, то та же самая ошибка преобразования типов возникнет внутри count в команде n:=m+1;. Правда красиво? :facepalm:
Единственная возможность объявить переменную n - вариантного (variant) типа. Тогда будут работать неявные преобразования из вещественного в целый типы и обратно. Ценой необнаруженных ошибок программиста (типа выше) и больших накладных расходов при выполнении.

PS. Кажется последние несколько сообщений вполне тянут на "CS юмор". :D Прям не программа, а сборник юмора какой-то. :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group