Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 5
1

Программы на массивы, и процедуры, и функции.

29.06.2009, 13:15. Показов 2679. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста написать программы! А то завтра экзамен и у меня не допуск!
1) Найдите номер последнего отрицательного элемента данного одномерного массива
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program otr;
const N=10;
type mas=array[1..N] of integer;
var massiv:mas; a,b:integer; i:byte;
procedure print(arr:mas;size:byte);
begin
     for i:=1 to size do
         write(arr[i],' ');
     writeln;
end;
begin
     randomize;
     a:=-9;
     b:=9;
     write('Массив: ');
     for i:=1 to N do
         massiv[i]:=random(b-a+1)+a;
     print(massiv,N);
Вот так я задаю массив.

2) Задан массив, состоящий из N целых чисел. Упорядочить его по убыванию, вставить в него элемент, значение которого равно c.
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
program upr_c;
const N=10;
label qwer;
type mas=array[1..N] of integer;
var massiv:mas; a,b,e,t,u:integer; i,s,d:byte;
procedure print(arr:mas;size:byte);
begin
     for i:=1 to size do
         write(arr[i],' ');
     writeln;
end;
begin
     randomize;
     a:=-9;
     b:=9;
     writeln('Исходный массив');
     for i:=1 to N do
         massiv[i]:=random(b-a+1)+a;
     print(massiv,N);
     d:=N-2 div 2;
                  e:=1;
          qwer:for i:=1 to d do
          begin
 
               if massiv[i]<massiv[i+1] then
               begin
               u:=massiv[i];
               massiv[i]:=massiv[i+1];
               massiv[i+1]:=u;
               end;
 
          end;
          if e<=1000 then
          begin
          e:=e+1;
          goto qwer;
          end;
 
     writeln('Преобразованный массив');
     print(massiv,N);
end.
А вот в этой я его смог упорядочить только! Остальные вообще не понимаю!

3) Дана матрица размера M x N. Вывести ее элементы, расположенные в строках с
четными номерами (2, 4, ...). Вывод элементов производить по строкам, условный
оператор не использовать.
4) Матрица А (n, n) заполняется генератором случайных чисел и переписывается в
одномерный массив по строкам. Найти максимальный элемент главной диагонали
матрицы. В одномерном массиве обнулить элементы строки матрицы, в котором он
содержится, а содержащий его столбец удалить. Из оставшихся элементов
сформировать новую матрицу с тем же количеством строк.
5) Даны числа X, Y, Z, T – длинны сторон четырехугольника. Вычислить его площадь,
если угол между сторонами длинной X и Y – прямой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2009, 13:15
Ответы с готовыми решениями:

массивы, процедуры и функции
вообще ничего не понимаю в программировании..первым делом стоит убрать лишний ввод и вывод) а...

Двумерные массивы. Процедуры и функции
Двумерные массивы. Процедуры и функции

Процедуры, функции, одномерные массивы
Всем привет. Введение массивов, вывод массивов, вычисление величин осуществлять с помощью...

Двумерные массивы. Процедуры и функции
нужер зделать программку, помогите если сможете: В матрице А (n х n) определите количество...

11
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 13:27 2
Остальные вообще не понимаю!
Тогда о каком допуске может идти речь? Только о допуске в ВС.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
29.06.2009, 13:28 3
3)
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
uses crt;
var a:array[1..100,1..100] of integer;
      i,j,n,m:integer;
begin
 clrscr;
 writeln('n,m ');
 readln(n,m);
 
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    a[i,j]:=random(50);
    write(a[i,j]:4);
   end
  writeln;
 end;
writeln('Massiv');
i:=0;
repeat
i:=i+2;
 for j:=1 to m do
  write(a[i,j],' ');
writeln;
until(i>=n);
readln;
end.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 5
29.06.2009, 14:23  [ТС] 4
Цитата Сообщение от Puporev Посмотреть сообщение
Тогда о каком допуске может идти речь? Только о допуске в ВС.
Самому это сложновато разобрать! А объяснять нам толком не объяснили. Только на лекции в общем рассказали о том что такое массив и о процедурах с функциями. Так то я разбираюсь в написанной программе. Только вот самому не всегда хватает фантазии написать ее.
P.S.: 1) А ты злой, Puporev. :-)
2) Спасибо mamedovvms.

Добавлено через 30 минут 27 секунд
1) Вот первую додумал!
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
program otr;
const N=10;
label qwer;
type mas=array[1..N] of integer;
var massiv:mas; a,b:integer; i:byte;
procedure print(arr:mas;size:byte);
begin
     for i:=1 to size do
         write(arr[i],' ');
     writeln;
end;
begin
     randomize;
     a:=-9;
     b:=9;
     write('массив: ');
     for i:=1 to N do
         massiv[i]:=random(b-a+1)+a;
     print(massiv,N);
     write('Номер последнего отрицательного элемента: ');
     for i:=1 to n do
     begin
          if massiv[n-i+1]<0 then
             begin
                  write(n-i+1,'  ');
                  goto qwer;
             end;
     end;
     qwer:writeln;
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 16:20 5
5) Даны числа X, Y, Z, T – длины сторон четырехугольника. Вычислить его площадь,
если угол между сторонами длинной X и Y – прямой.
Найти площадь прямоугольного треугольника и длину его гипотенузы. Потом по формуле Герона найти площадь второго треугольника и сложить.
При вводе сделать проверку. Ввести Х и У, потом Z и Т, проверить чтоб Z+T>sqrt(X*X+Y*Y), иначе 4х угольник не получится.

Добавлено через 48 минут 29 секунд
Держи, добрый человек, четвертую.
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
51
52
53
54
55
56
57
uses crt;
var a:array[1..20,1..20] of integer;
    b:array[1..400] of integer;
    max:integer;
    n,i,j,k,l,imax:byte;
begin
clrscr;
randomize;
write('Размер матрицы n=');
readln(n);
writeln('Матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(20);
    write(a[i,j]:4);
   end;
  writeln;
 end;
max:=a[1,1];imax:=1;
for i:=1 to n do
if a[i,i]>max then
 begin
  max:=a[i,i];
  imax:=i;
 end;
writeln('Максимальный на главной диагонали=',max,' строка ',imax,' столбец ',imax);
writeln('Исходный массив:');
k:=0;
for i:=1 to n do
for j:=1 to n do
 begin
  k:=k+1;{считаем элементы}
  b[k]:=a[i,j];{записываем их в массив}
  write(b[k],' ');
 end;
writeln;
for i:=(imax-1)*n+1 to imax*n do{нужная строка}
b[i]:=0;{обнуляем}
writeln('Обнуление:');
for i:=1 to k do
write(b[i],' ');
writeln;
for i:=n downto 1 do{повторяем каков размер матрицы, только с конца}
for j:=k downto 1 do{по массиву с конца}
if j=(i-1)*n+imax then{если элемент принадлежит нужному столбцу}
 begin
  for l:=j to k-1 do{сдвигаем массив влево на 1 к этому элементу}
  b[l]:=b[l+1];
  k:=k-1;{уменьшаем размер массива}
 end;
writeln('Массив:');
for i:=1 to k do
write(b[i],' ');
readln
end.
Добавлено через 34 минуты 37 секунд
И вторую. На 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
uses crt;
var a:array[1..100] of integer;
    n,i,j,l,c,x:integer;
begin
clrscr;
randomize;
write('Размер массива n=');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=random(20);
  write(a[i],' ');
 end;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
writeln('Отсортированный массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
write('Введите число для вставки c=');
readln(c);
if c<=a[n] then a[n+1]:=c
else
 begin
  j:=0;
  for i:=1 to n do
  if a[i]>=c then j:=i;
  for l:=n+1 downto j+2 do
  a[l]:=a[l-1];
  a[j+1]:=c;
 end;
writeln('Результат:');
for i:=1 to n+1 do
write(a[i],' ');
readln
end.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 5
29.06.2009, 16:34  [ТС] 6
Спасибо большущее! Я как раз сделал пятую!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program prjam;
label zanovo;
var
   x,y,z,t,gip,p,S1,S2,S:real;
begin
     zanovo:
     writeln('Введите x,y,z,t');
     readln(x,y,z,t);
     if z+t<sqrt(x*x+y*y) then
     begin
          writeln('Введите в другом порядке строны, т.к. 4-х угольник не получается');
          goto zanovo;
     end;
     s1:=(x*y)/2;
     gip:=sqrt(x*x+y*y);
     p:=(z+t+gip)/2;
     s2:=sqrt(p*(p-z)*(p-t)*(p-gip));
     s:=s1+s2;
     writeln('Площадь = ',s:0:3);
end.
Ток вот странно что пятая работа была в теме процедур и функций, а тут это вообще не нужно.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 16:56 7
была в теме процедур и функций,
Напишите 2 функции, 1я- определение площади прямоугольного треугольника, 2я-определение площади по формуле Герона, раз уж тема такая.
0
56 / 56 / 0
Регистрация: 04.06.2009
Сообщений: 357
29.06.2009, 17:06 8
Никто не знает, как сделать так, чтобы после создания программы в конце не писалось Е+

к примеру 1,423742898126E+01
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 17:11 9
write('x=',x:10:5); Ну ли сколько там надо знаков. 10-количество позизиций в строке под число, 5-количество знаков после запятой.
И не лезьте в чужие темы, в следующий раз удалю.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 5
29.06.2009, 18:13  [ТС] 10
Вот так! Только как-то глупо получается!
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
program prjam;
label zanovo;
var
   x,y,z,t,s:real;
function plo_4(a,b,c,d:real):real;
var gip,p,s1,s2,s0:real;
begin
     s1:=(a*b)/2;
     gip:=sqrt(a*a+b*b);
     p:=(c+d+gip)/2;
     s2:=sqrt(p*(p-c)*(p-d)*(p-gip));
     s0:=s1+s2;
     plo_4:=s0;
end;
begin
     zanovo:
     writeln('Введите x,y,z,t');
     readln(x,y,z,t);
     if z+t<sqrt(x*x+y*y) then
     begin
          writeln('Введите в другом порядке строны, т.к. 4-х угольник не получается');
          goto zanovo;
     end;
     s:=plo_4(x,y,z,t);
     writeln('Площадь = ',s:0:3);
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 18:45 11
Писать программу нужно вдумчиво, создавая ее структуру, чтоб действия шли последовательно, чтоб логика была. Старайся без нужды не использовать глобальные переменные и, тем более, эту древность goto.
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
program prjam;
uses crt;
procedure PloshPrm(a,b:real;var c,s:real);
begin
c:=sqrt(a*a+b*b);
s:=a*b/2;
end;
function PloshTrg(a,b,c:real):real;
var p:real;
begin
p:=(a+b+c)/2;
PloshTrg:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
var
   x,y,z,t,gip,s1,s2,s:real;
begin
clrscr;
writeln('Введите x,y');
readln(x,y);
repeat
writeln('Введите z,t');
readln(z,t);
if z+t<=sqrt(x*x+y*y) then
writeln('Это не 4-х угольник!');
until z+t>sqrt(x*x+y*y);
PloshPrm(x,y,gip,s1);
s2:=PloshTrg(z,t,gip);
s:=s1+s2;
writeln('Площадь = ',s:0:3);
readln
end.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 5
30.06.2009, 17:26  [ТС] 12
Спасибо. Буду учиться. А goto мне просто нравится. Я знаю, что многие программисты против него!
0
30.06.2009, 17:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2009, 17:26
Помогаю со студенческими работами здесь

Процедуры, функции, одномерные массивы
Всем привет, в универе задали, помогите, пожалуйста. Введение массивов, вывод массивов,...

Массивы - процедуры и функции пользователя
Задание 5. Процедуры и функции пользователя. Составить процедуру определения суммы элементов...

Задача pascal/delphi (массивы,процедуры и функции)
Добрый день, прошу помочь с задачей: Два двумерных массива, содержащие соответственно 3х5 и 4х8...

Массивы, символьная и строковая информация, процедуры, функции, рекурсия
Задача 1 Задача 2 Базовый уровень. Определить, есть ли в строке точки и запятые. ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru