BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Задача Паскал.
darksider1530
Публикувано на: 07-11-2016, 12:43
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 07.11.16



Даден е двумерен масив от с n реда и n стълба. Да се намери номера на реда, чиито елементи образуват аритметична прогресия.

Това е задачка за Курсова работа. Студент съм 1ви курс и моля за малко помощ, тъй като нямахме достатъчно часове по Паскал за масиви.

Благодаря предварително.
-------------------------------------------------------------------------------------------------------------------
EDIT: до тука стигнах, не мога да измисля как да намеря аритметична прогресия ако има грешки казвайте:
CODE

program zadacha51;
var n, n : integer;
var matrix : array [1..30, 1..30] of integer;
var i, j : integer;
var min, max : array [1..30] of integer;
begin

      write ('Vyvedete broi na redove (1 - 30): ');
      readln (m);                                                                              {Chetem broi redove}
      write ('Vyvedete broi na stylbove (1 - 30): ');
      readln (n);                                                                              {Chetem broi stylbove}

      writeln ('Vyvejdane na matrica...');
      writeln ();

      for i := 1 to n do begin
            for j := 1 to n do begin
                  write (i, ' ', j, ': ');                                          {Chetem za vseki element}
                  readln (matrix [i, j]);
            end;
      end;


Това мнение е било редактирано от darksider1530 на 07-11-2016, 16:38
PMEmail Poster
Top
Golden Gega
Публикувано на: 08-11-2016, 10:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2189
Регистриран на: 04.06.10



Аритметична прогресия е когато имаш редица елементи:

а1, а2, а3 ... aN

с условието a2 = a1 + x, a3 = a2 + x и т.н.
или казано по-друг начин:
a2 - a1 = a3 - a2 = a4 - a3 = ... = aN - aN-1

В случая провераката би била нещо подобно:

for i := 1 to 30
begin
f := true;

for j := 3 to 30 do
if ((matrix[i, j - 1] - matrix[i, j - 2]) <> (matrix[i, j] - matrix[i, j - 1])) then
f := false;

if f then
writeln('Red ', j, ' e aritmetichna progresia');
end;
PMEmail Poster
Top
darksider1530
Публикувано на: 08-11-2016, 11:03
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 07.11.16



Благодаря много. Аз знам аритметична прогресия но не бях сигурен как да я въведа в Паскал. А по това дето съм го писал има ли някакви грешки?

------------------------------
Edit: Пробвах варианта. изкарва ми че всички редове от 1 до 30 са прогресии дори когато са въведена матрица 5 на 3

Това мнение е било редактирано от darksider1530 на 08-11-2016, 15:41
PMEmail Poster
Top
Golden Gega
Публикувано на: 08-11-2016, 16:43
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2189
Регистриран на: 04.06.10



Първо ме съмнявя да си пробвал точно кода дето си написал, тук ще даде грешка ;-)
CODE
var n, n : integer;

Второ, дори да си го оправил матрица 5х3 не можеш да вкараш:
CODE
for i := 1 to n do begin
           for j := 1 to n do begin

тия два цикъла правят всяка матрица да е с еднакъв брой колони и редове.
Трето, в моя кода циклите не трябва да са от 1 до 30, а от 1 до n и съответно от 1 до другата променлива.

Сложи да видим с кой код си пробвал и каква матрица си вкарал. Ако си вкарал ред 1, 1, 1 например той също се води прогресия с d = 0
PMEmail Poster
Top
darksider1530
Публикувано на: 09-11-2016, 16:08
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 07.11.16



CODE
program zadacha49;
var n: integer;
var masiv : array [1..30 , 1..30] of integer;
   i,j:integer;
var f:boolean;
begin
   write ('Vavedete broi na redove (1-30): ');
   readln(n);
   write ('Vavedete broi na stalbove (1-30): ');
   readln(n);
   writeln ('Vavezhdane na matrica...');
   for i:=1 to n do begin
        for j:=1 to n do begin
            write(i, ' ',j,' ');
            readln (masiv [i,j]);
        end;
   end;
   for i:=1 to 30 do
    begin
    f:=true;
    end;
  for   j:= 1 to 30 do begin
     if((masiv[i,j-1]-masiv[i,j-2])<>(masiv[i,j]-masiv[i,j-1])) then
      f:=false;
      if f then
      writeln('Red ',j ,'e aritmetichna progresiya');
     end;
readln;
end.


ето го кода. нещо не мога да го оправя.
PMEmail Poster
Top
Golden Gega
Публикувано на: 10-11-2016, 16:45
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2189
Регистриран на: 04.06.10



Имаш един излишен "end" под "f := true"
PMEmail Poster
Top
darksider1530
Публикувано на: 11-11-2016, 13:00
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 07.11.16



махнах end-a но на крайния ми дава да е с ;-ка...и след това с .-чка. направих го но всеки път ми излиза един и същ резултат ще прикача снимка на това което ми излиза след като въведа 5 на 5 матрица

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка
PMEmail Poster
Top
Golden Gega
Публикувано на: 11-11-2016, 15:38
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2189
Регистриран на: 04.06.10



Имам една забележка дето хич не си обърнал внимание

CODE

for i := 1 to n do begin
          for j := 1 to n do begin
PMEmail Poster
Top
darksider1530
Публикувано на: 11-11-2016, 16:58
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 07.11.16



тоест едното да го махна? Сори че малко така ама съм начинаещ. уча се :Д
PMEmail Poster
Top
miron
Публикувано на: 11-11-2016, 20:56
Quote Post



Име: Мирослав Николов
Група: Потребител
Ранг: Старо куче

Мнения: 748
Регистриран на: 26.04.05



Ако и двата цикъла са до n, ще можеш да въвеждаш само матрици с еднаква размерност (2*2, 3*3, 4*4 ...). Ако искаш да въведеш матрица 3*5 - трябва да промениш циклите.
PM
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0