• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль, проверочная работа

matrinishna

Ученик
Регистрация
15 Дек 2010
Сообщения
3
Реакции
0
Баллы
0
Паскаль, проверочная работа

5.Даны действительные числа А, В, С. По трём сторонам с длинами А, В, С можно построить треугольник.Найти площадь треугольника.
6.Определить, является ли натуральное число N степенью числа 4 или нет.
7.В приложении
8.Дана квадратная матрица А(n,n).Найти сумму максимальных элементов столбца матрицы
 

Вложения

  • Безымянный4.webp
    Безымянный4.webp
    10.4 KB · Просмотры: 241
5.Даны действительные числа А, В, С. По трём сторонам с длинами А, В, С можно построить треугольник.Найти площадь треугольника.
Код:
var
a,b,c:integer;
s,p:real;
begin
write ('a=');
readln(a);
write ('b=');
readln (b);
write ('c=');
readln(c);
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln ('S=',s);
readln
end.
 
Последняя задача:
Код:
Var a:array[1..1000,1..1000] of longint;
b:array[1..1000] of longint;
i,j,n,m,max,v:longint;
Begin
Writeln('Vvedite storony kvadrata'); {no comment}
Readln(n);
m:=n;
v:=0;
Writeln('Zapolnenie massiva');  {no comment}
For i:=1 to n do
For j:=1 to n do
Readln(a[i,j]);
max:=a[1,1];
For j:=1 to n do
For i:=1 to n do
begin
if a[j,i]>max
Then max:=a[j,i];
If n=m
then b[j]:=a[j,i];
end;
For i:=1 to j do
v:=v+b[i];
Writeln(v:2)  ;
Readln;
End.
Писал на Pascal ABC ( и она заработала сразу!!!):tehnari_ru_509:
 
Последнее редактирование:
Последняя задача:
Как всегда, полным-полно ошибок.
Значит, сделаем так.
Даю Вам 3 дня на то, чтобы отладить программу. Если в течение указанного срока не появится исправленный, отлаженный (оттестированный) вариант, мы с Вами расстаемся.
Не обижайтесь, но задача программиста (да-да, это слово пишется с двумя "м") на форуме - помочь, а не продемонстрировать "ай, какой я молодец!".
Есть, знаете ли, такое слово - "ответственность". Не попадалось?
Так вот - информирую. Это такое чувство, которое есть у всех членов нашего сообщества программистов, причем не только за результаты своего творчества, но и за репутацию форума в целом.
 
Вот исправленно:
Var a:array[1..1000,1..1000] of longint;
b:array[1..1000] of longint;
i,j,n,m,max,v:longint;
Begin
Writeln('Vvedite storony kvadrata');
Readln(n);
m:=n;
v:=0;
Writeln('Zapolnenie massiva');
For i:=1 to n do
For j:=1 to n do
Readln(a[i,j]);
max:=a[1,1];
For j:=1 to n do
For i:=1 to n do
begin
if a[i,j]>max
Then max:=a[j,i];
If n=m
then b[j]:=a[i,j];
end;
For i:=1 to j do
v:=v+b;
Writeln(v:2);
End.
Запускать на Pascal ABC.

Яркий пример "индусского кода" :))
 
Не пойдет. Ошибок существенно меньше не стало. Ладно, кое-какие подсказки:
1. (не ошибка, но тем не менее) Вводить двумерный массив "вслепую", не имея на экране подсказок - страшно неудобно. Потрудитесь организовать подсказки, чтобы было ясно, какой элемент вводится.
2. Вы вводите с консоли размерность матрицы n, затем присваиваете параметру m значение этого m (m:=n;) и в дальнейшем ни тот, ни другой параметр не меняются. А потому условие "If n=m then" абсолютно бессмысленно. И вообще, что собой представляет параметр m и зачем он был введен - ведомо только Вам.
3. Путаница с индексами массива A[i,j], A[j,i].
И это еще не полный перечень.

Значит, так. Настоятельно рекомендую взять лист бумаги, нарисовать на нем квадратную матрицу размером 3х3, 4х4 или 5х5, заполнив произвольными числами (при этом избегая каких бы то ни было симметрий), далее выписать максимальные значения в столбцах и просуммировать их. Потом запустить программу, ввести в нее матрицу и сверить результат.
Проделать это несколько раз для разных матриц разных размеров.
И только убедившись в том, что программа всегда выдает правильный ответ, выложить сюда код.

А пока перспектива расставания остается в силе.
 
Мозги скрипели, выдавали синий экран и кричали остановись, но я зделал её:
Код:
Uses CRT;
Var a:array[1..1000,1..1000] of longint;
b:array[1..1000] of longint;
i,j,n,max,v:longint;
Begin
Writeln('Введите сторону квадрата');
Readln(n);
v:=0;
Writeln('Заполнение массива');
For i:=1 to n do
For j:=1 to n do
Readln(a[i,j]);
max:=a[1,1];
For j:=1 to n do
For i:=1 to n do
begin
if a[i,j]>max
Then max:=a[i,j];
b[j]:=max;
end;
For i:=1 to n do
v:=v+b[i];
Writeln(v:2);
for i:=1 to n do
begin
for j:=1 to n do
begin
Write(a[i,j],' ');
end;
Writeln;
end;
End.
 
Mr.Програмист у меня к вам вопрос: Вы программу тестировали?
При запуске программы срузу же ошибка:
a:array[1..1000,1..1000] of longint;
слишком большая структура.
Вводить двумерный массив "вслепую", не имея на экране подсказок - страшно неудобно.
жаль что не послушали совета.
И для задержки вместо writeln используется readln
 
Последнее редактирование:
Код:
Uses CRT;
Var a:array[1..100,1..100] of INTEGER;
b:array[1..100] of INTEGER;
i,j,n,max,v:longint;
Begin
Writeln('Введите сторону квадрата');
Readln(n);
v:=0;
Writeln('Заполнение массива');
For i:=1 to n do
For j:=1 to n do
Readln(a[i,j]);
max:=a[1,1];
For j:=1 to n do
For i:=1 to n do
begin
if a[i,j]>max
Then max:=a[i,j];
b[j]:=max;
end;
For i:=1 to n do
v:=v+b[i];
Writeln(v:2);
for i:=1 to n do
begin
for j:=1 to n do
begin
Write(a[i,j],' ');
end;
Writeln;
end;
End.
 
Код:
Uses CRT;
Var a:array[1..100,1..100] of INTEGER;
b:array[1..100] of INTEGER;
i,j,n,max,v:longint;
Begin
Writeln('Введите сторону квадрата');
Readln(n);
v:=0;
Writeln('Заполнение массива');
For i:=1 to n do
For j:=1 to n do
Readln(a[i,j]);
max:=a[1,1];
For j:=1 to n do
For i:=1 to n do
begin
if a[i,j]>max
Then max:=a[i,j];
b[j]:=max;
end;
For i:=1 to n do
v:=v+b[i];
Writeln(v:2);
for i:=1 to n do
begin
for j:=1 to n do
begin
Write(a[i,j],' ');
end;
Writeln;
end;
End.
А другие замечания Миши (Shrek) Вы проигнорировали? Напрасно. Всего-то и нужно было, что
Код:
Uses CRT;
Var 
 a:array[1..100,1..100] of INTEGER;
 b:array[1..100] of INTEGER;
 i,j,n,max,v:longint;
Begin
 Writeln('Введите сторону квадрата');
 Readln(n);
 v:=0;
 Writeln('Заполнение массива');
 For i:=1 to n do
  For j:=1 to n do
  [COLOR=Red] begin
    Write('a[',i:2,',',j:2,']= ');
    Readln(a[i,j]);
   end;[/COLOR]
 [COLOR=Red]For j:=1 to n do
  begin
   max:=a[1,j];
   For i:=1 to n do
    begin
     if a[i,j]>max then 
     max:=a[i,j];
    end;
   b[j]:=max;
  end;[/COLOR]
 For i:=1 to n do
  v:=v+b[i];
 Writeln(v:2);
 [COLOR=Red]for i:=1 to n do
  begin
   for j:=1 to n do
    Write(a[i,j],' ');
   Writeln;
  end;[/COLOR]
 Readln;
End.
Еще исправлены ошибки в построении циклов.

Теперь про другие дела.
Несмотря на то, что Вы так и не довели программу до ума, я не хочу отлучать Вас от форума.
Вместе с тем, прошу понять - до права выкладывать свои программы Вы явно не доросли, поэтому убедительно прошу (пока прошу) воздержаться от этого. Учитесь, взрослейте - а там посмотрим.
P.S. Между прочим, слова "программа", программист" и т.д. пишутся с двумя "м". Кроме того, в русском языке нет приставки "з", есть приставка "с", а потому не "зделал", а "сделал". Очень рекомендую и русский язык "подтянуть" - в жизни пригодится.
 
Назад
Сверху