Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ за задачи на Pascal (merged)

Featured Replies

Първо се вижда грешка на реда : j:=j+1; не може да присвояваш стойност на променливата на цикъла. При повторно пускане на програмата, ти директно нулираш файла. Трябва да провериш дали съществува, и ако е така да използваш : reset(db); seek(db,filesize(db)); вместо rewrite(db);

Редактирано от Ken (преглед на промените)

  • Отговори 622
  • Прегледи 132k
  • Създадено
  • Последен отговор

Първо се вижда грешка на реда :

j:=j+1;

не може да присвояваш стойност на променливата на цикъла.

10х. Сещам се от каде е останало това... Премахнах го, след като тествах пак не е записано нищо във файла.

Имам една идея, но искам да попитам предварително...

По-рано ми се бешше случвало да не прави някои промени определена програма, защото промените се правят в процесура. Ако включа текста в основната прогеама а не в отделна процедура всичко е наред. Дали и тука случая е такъв и в кои случаи процедурата може да прави глобални промени или винаги прави само локални в границите на самата процедура?

ПП: При повторното отваряне използвам друга процедура именно защото с тази ще нулирам файла.

В другата процедура ползвам именно reset(db) и filesize(db), и точно filesize ми излиза с резултат 0...

ПП2: Това е само процедура от програмата, която се избира от меню. При стартиране на програмата менюто стои на екрана и чака избор. В смисъл тая процедура за създаване на нова база данни се включва когато аз я включа...

ПП3 така няма да стане...

Ето ти текста на цялата програма:

Uses CRT;

Type data=record

num:integer;

class:string[10];

content:array[1..100] of string[25];

end;

VAR ch:integer;

db,base:file of data;

Procedure newbase;

var d:data;

j,n,s:integer;

begin

j:=0;

n:=1;

s:=1;

clrscr;

writeln;

writeln;

writeln(' ':15,'Insert the information for the discs:');

assign(db,'Database');

rewrite(db);

repeat

begin

d.num:=n;

writeln;

write(' ':15,'Type of content (music, movies, software): ');

readln(d.class);

for j:=1 to 100 do

begin

while (s=1)and(j<100) do

begin

write(' ':15,'Insert content (one name only): ');

readln(d.content[j]);

write(' ':15,'More content on that disc (1-Yes,2-No): ');

readln(s);

end;

if (s=2) and (j<101) then

d.content[j]:='.';

end;

write(db,d);

writeln;

write(' ':15,'1-New disc, 2-Back to Main Menu: ');

readln(s);

end;

until s=2;

close(db);

end;

Procedure Change;

var n,i,j,s:integer;

name:string[25];

c:data;

begin

clrscr;

assign(db,'Database1');

rewrite(db);

assign(base,'Database');

reset(base);

writeln;

writeln;

s:=filesize(db);

write(' ':10,'Insert the disc number (1 to ',s,': ');

readln(n);

while not eof do

begin

read(base,c);

if (c.num<n) or (c.num>n) then

write(db,c)

else

begin

writeln;

repeat

begin

write(' ':10,'Deleteing content (1-Yes 2-No): ');

readln(n);

if n=1 then

begin

write(' ':10,'Choose content to delete: ');

readln(name);

for i:=1 to 100 do

if c.content=name then

c.content:='.';

end;

end;

until n=0;

writeln;

repeat

begin

write(' ':10,'Adding content (1-Yes 2-No): ');

readln(n);

if n=1 then

begin

write(' ':10,'Choose content to add: ');

readln(name);

j:=0;

for i:=1 to 100 do

if (c.content='.') and (j=0) then

begin

j:=1;

c.content:=name;

end;

end;

end;

until n=0;

end;

end;

close(db);

close(base);

erase(base);

rename(db,'Database');

end;

BEGIN

Repeat

Begin

Clrscr;

writeln(' ':25,'*===========================*');

writeln(' ':24,'< Catalog CD DVD Collection >');

writeln(' ':25,'*===========================*');

writeln;

writeln(' ':25,' M A I N M E N U ');

writeln;

writeln;

writeln;

writeln(' ':26,'0. Create new database.');

writeln;

writeln(' ':26,'1. Searching database.');

writeln;

writeln(' ':26,'2. Changing database.');

writeln;

writeln(' ':26,'3. Delete database.');

writeln;

writeln(' ':26,'4. Exit catalog.');

writeln;

writeln;

write(' ':26,'Choise: ');

readln(ch);

end;

if (ch<0) or (ch>4) then

begin

clrscr;

writeln;

writeln;

write(' ':12,'Please, enter a number for chosen option betwen 0 and 4! ');

readln;

end;

If ch=0 then

begin

clrscr;

newbase;

end;

{If ch=1 then

begin

clrscr;

searching;

end;}

if ch=2 then

begin

clrscr;

change;

end;

{if ch=3 then

begin

clrscr;

find;

end;}

Until ch=4;

clrscr;

writeln;

writeln;

write(' ':28,'For EXIT press <Enter>! ');

readln;

END.

До тук съм и при опит за промяна на съдържанието се оказва че във файла няма нищо...

Редактирано от psycho_666 (преглед на промените)

10х. Сещам се от каде е останало това... Премахнах го, след като тествах пак не е записано нищо във файла.

Имам една идея, но искам да попитам предварително...

По-рано ми се бешше случвало да не прави някои промени определена програма, защото промените се правят в процесура. Ако включа текста в основната прогеама а не в отделна процедура всичко е наред. Дали и тука случая е такъв и в кои случаи процедурата може да прави глобални промени или винаги прави само локални в границите на самата процедура?

ПП: При повторното отваряне използвам друга процедура именно защото с тази ще нулирам файла.

В другата процедура ползвам именно reset(db) и filesize(db), и точно filesize ми излиза с резултат 0...

При мен тази процедура пише във файла.

Не знам при теб какво още изпълнява преди нея.

Процедурата Change, бих променил така :

procedure Change;
var n, i, j, s: integer;
  name: string[25];
  c: data;

begin
  clrscr;
  assign(db, 'Database');
  reset(db);
  writeln;
  writeln;
  s := filesize(db);
  write(' ': 10, 'Insert the disc number (1 to ', s+1, ': ');
  readln(n);

            write(' ': 10, '1-Delete, 2-Change, 0-Exit: ');
          readln(n);
          case  n of
          1:
          begin
            for i:=n to s-1 do
            begin
              seek(db,n);
              read(db,d);
              seek(db,n-1);
              write(db,c);
// Това го пробвай. Аз не съм.
            end;
            truncate(db);
          end;
          2:
          begin
            for i:=n to s-1 do
            begin
// Добавяш съдържание
            end;
            truncate(db);
          end;

          end;

  close(db);
end;

Редактирано от Ken (преглед на промените)

  • 3 седмици по-късно...

Правя си курсовата задача но нещо не сработва добре програмата и не мога да разбера защо. Компилира се и се изпълнява първата процедура но дотам. Когато дойде ред на втората курсора си мига и нищо не става. Това ми е програмата надявам се някой да можбе да ми покаже грешката. program kursowa_rabota; uses dos, crt; type o=array[1..10] of 2..6; student=record Ime:string; FakNom:string[6]; Ocenki:o; EGN:string; srusp:real; end; var fgr:file of student; gr:array[1..50] of student; st:student; fname:string; fem, otlusp, prol:string; i, j, k, l:integer; Procedure read_stud; begin clrscr; write('Âúâåäåòå èìå íà ñòóäåíòà: '); readln(st.ime); Write('Ôàêóëòåòåí Íîìåð: '); readln(st.FakNom); for j:=1 to 10 do begin write('Îöåíêà [',j,']:= '); readln(st.ocenki[j]); end; write('Âúâåäåòå ÅÃÍ: '); readln(st.EGN); end; Procedure Syzd_file; begin clrscr; write('Pyt i ime na fail: '); readln(fname); assign(fgr, fname); rewrite(fgr); repeat read_stud; if(length(st.ime)>0) then write(fgr,st); until length (st.ime)=0; close(fgr); end; Procedure sreden_uspeh; var s:real; srar:real; begin reset(fgr); begin repeat seek(fgr, i); read(fgr,st); s:=0; for j:=1 to 10 do s:=s+st.ocenki[j]; srar:=s/10; until eof; writeln('sredniqt uspeh na studenta',st.ime,'e',st.srusp); close(fgr); readln; end; end; begin syzd_file; sreden_uspeh; end.

В последната процедура, където смяташ среден успех, правиш Reset на файл, без да си направил Assign преди това.

Редактирано от Ken (преглед на промените)

  • 4 седмици по-късно...

Трябва да сътворя курсова работа до 27.10.2009 , която да представлява програма за обработка на масив [16,16] съставен от реални числа със стоийности в интервала [-99.99,99.9],като съответно да изпълнява следните действия:

1. въвеждане на входни данни

2. отпечатване на входни данни

3. намиране максималният елемент от минималните елементи, намерени поотделно за всички линии успоредни на второстепенния диагонал

4. да се отпечатат получените резултати след обработката

та ако на никого не му се занимава с писането на цялата програма, то поне да ми обясни 3. РАЗБИРА СЕ АКО ИМА ЖЕЛАЕЩИ ДА СЕ ЗАНИМАВАТ С ТОЗИ МОЙ ПРОБЛЕМ !

Редактирано от capnemo (преглед на промените)

Обясни малко по-подробно т.3 от заданието. Значи доколкото разбрах намирам всички минимални елементи по определени линии, след това намирам най-големия от тях, но не разбрах какъв е тоя второстепенен диагонал. Програмата е писане за няма и половин час. Обясни ми го това и ще ти я напиша...

До колкото си спомням главният диагонал в съставен от елементите с еднакви индекси, а второстепенния е другият. "Определените линии" са успоредните на второстепенния диагонал - под и над него и са с различна дължина очевадно. Допълнение: това е обяснение на условието, а не въпрос :)

Редактирано от tyrmyk (преглед на промените)

значи пиша го дословно както ми е зададено в условието на задачата, така че не мога да ти отговоря тъй като и аз не разбирам ... в нета намерих 2 уравнения S1=A(1,1)+A(2,2) +....+ A(i,i)+...+ A(n,n) S2=A(1,n)+A(2,n-1)+A(3,n-2)+....+A(N,1) където S1 е главния диагонал на матрицата, а S2 е второстепенния... но пак не разбирам и аз какво се има предвид второстепенен диагонал..

Редактирано от enriko_ (преглед на промените)

До колкото си спомням главният диагонал в съставен от елементите с еднакви индекси, а второстепенния е другият. "Определените линии" са успоредните на второстепенния диагонал - под и над него и са с различна дължина очевадно.

Значи второстепенния диагонал е 1:16, 2:15, 3:14, 4:13, ..., 15:2, 16:1. Така ли да разбирам? Значи ясно... След половин час имате текста на програмата... Редом с обясненията кое как работи и защо е така.

Значи второстепенния диагонал е 1:16, 2:15, 3:14, 4:13, ..., 15:2, 16:1. Така ли да разбирам? Значи ясно... След половин час имате текста на програмата... Редом с обясненията кое как работи и защо е така.

еее нямаш представа колко съм ти благодарен !!! :wors: :wors: и току-що изкара 6 по информатика за I семестър в ТУ-София :)

Редактирано от enriko_ (преглед на промените)

еее нямаш представа колко съм ти благодарен !!! :wors: :wors: и току-що изкара 6 по информатика за I семестър в ТУ-София :)

Няма проблеми, само за разговора, имам 6 и първи и втори семестър по информатика (с паскал) в Русенски университет, че и на олимпиада ходих... Там писах кръстословица и игра на карти на паскал... Кръстословицата тръгна, играта на карти даже и даскалицата не разбра защо не върви.

ПП: може и да отнеме повече от половин час, щото имам малък проблем с масива, ама ще го оправя...

Редактирано от psycho_666 (преглед на промените)

Няма проблеми, само за разговора, имам 6 и първи и втори семестър по информатика (с паскал) в Русенски университет, че и на олимпиада ходих... Там писах кръстословица и игра на карти на паскал... Кръстословицата тръгна, играта на карти даже и даскалицата не разбра защо не върви.

ПП: може и да отнеме повече от половин час, щото имам малък проблем с масива, ама ще го оправя...

и 1 седмица да ти отнеме няма проблем, тъй като това нещо ми трябва за 27.10.09

Има грешка някаде в т.3 от програмата, но не зная каде е. На доло съм написал кода, и описал идеята, по която работих. т.1 и т.2 работят безпроблемно, но т.3 дори не тръгва. Моля някой да провери т.3, защото аз нямам на идея каде е грешката.

uses crt;

var ar:array[1..16,1..16] of real;

smar,helpar:array[1..32] of real;

i,j,x,o,h:integer;

num:real;

Begin

x:=0;

o:=0;

repeat

clrscr;

writeln;

writeln(' ':20,'M E N U');

writeln;

writeln;

writeln;

writeln(' ':20,'1. Vavejdane na masiva.');

writeln(' ':20,'2. Izwejdane na ekrana na vavedeniq masiv.');

writeln(' ':20,'3. Obrabotka i izpisvane na rezultata.');

writeln(' ':20,'4. Izhod.');

writeln;

writeln;

write(' ':20,'Izberete opcia: ');

readln(o);

if (o<1) or (o>4) then

begin

write(' ':20,'Izbrali ste ne sashtestvuvashta opcia.');

readln;

end;

if o=1 then

begin

clrscr;

for i:=1 to 16 do

begin

writeln('Vavedete elementite na ',i,'-iq red:');

for j:=1 to 16 do

begin

repeat

write('Vavedete ',j,'-iq element: ');

readln(ar[i,j]);

if (ar[i,j]<-99.99) or (ar[i,j]>99.99) then

begin

writeln(' ':20,'Molq vavedete realno chislo mejdu -99.99 i 99.99!');

write('Vavedete ',j,'-iq element: ');

readln(ar[i,j]);

end;

until (ar[i,j]>-99.99) or (ar[i,j]<99.99)

end;

end;

x:=1;

readln;

end;

if o=2 then

begin

if x=0 then

begin

clrscr;

writeln(' ':20,'Ne ste vaveli masiv, molq vavedete stojnosti na masiva!');

readln

end

else

begin

clrscr;

for i:=1 to 16 do

begin

for j:=1 to 16 do

write(ar[i,j]:2,2,' ');

writeln;

end;

readln;

end;

end;

if o=3 then

begin

if x=0 then

begin

clrscr;

writeln(' ':20,'Ne ste vaveli masiv, molq vavedete stojnosti na masiva!');

readln

end

else

for i:=1 to 32 do

smar:=-99.99;

for x:=3 to 16 do

begin

h:=1;

for i:=1 to 16 do

for j:=1 to 16 do

begin

if i+j=x then

helpar[h]:=ar[i,j];

h:=h+1;

end;

smar[x]:=helpar[1];

for i:=2 to h do

if helpar<helpar[i-1] then

smar[x]:=helpar;

end;

for x:=18 to 31 do

begin

h:=1;

for i:=1 to 16 do

for j:=1 to 16 do

begin

if i+j=x then

helpar[h]:=ar[i,j];

h:=h+1;

end;

smar[x]:=helpar[1];

for i:=2 to h do

if helpar<helpar[i-1] then

smar[x]:=helpar;

end;

num:=smar[1];

for i:=2 to 32 do

if smar>smar[i-1] then

num:=smar;

clrscr;

writeln;

write(' ':20,'Sled obrabotka poluchenoto chislo e: ',h:2,2);

readln;

end;

until o=4;

readln;

END.

Така. Сега ад обясня кое какво е...

В началото имаш меню, което ти дава 4 избора - въвеждане на масива, показване масива на екрана, обработата и изкарване на получения резултат и изход.

Нещата са малко сложни, за това чети внимателно.

1. Матрицата се въвежда с два цикъла с броячи - първия цилъл е за редовете (индекс i) и цикъл за колоните (с индекс J). След въвеждане на матрицата се вижда едно число Х, което приема стойност 1. То се използва за проверка, ако не си въвел числа в матрицата Х остава 0. Ако Х е 0 при избор на друга опция програмата ти казва да въведеш числа в матрицата(масива), за да може да работи.

2. След като въведеш стойностите на елементите в масива те се изписват на екрана. На един ред ти се появява 1-вия ред, както си го въвел - 1-ви елемент, интервал, 2-ри елемент, интервал, 3-ти елемент и така до 16-ти елемент.

След това се изписва на нов ред 2-рия ред по същия начин. И така до 16-тия ред. След това програмата чака да натиснеш Ентър, за да продължиш напред.

3. Тука идва сложната част.

Масива smar ти е едномерен масив от всички най-малки стойности по диагонали.

Масива helpar е помощен масив. Във него извеждам всеки един диагонал, за да мога после да определя кое е най-малкото число в този диагонал.

Забелязах (вероятно и ти ще разбереш), че сбора на индексите на елементите във всеки диагонал е еднакъв. Например ако имаш елементи 1.5 2.4 3.3 4.2 5.1 сбора на индексите е 6 и всички тези елементи лежат на един диагонал. Няма друг диагонал, който да има сбор на индексите 6. Следващия диагонал има сбор 7 (1.6 2.5 3.4 4.3 5.2 6.1) и т.н. По този начин проверявам всеки елемент.

Отварям цикъл с брояч. Броячът определя сбора от индексите (от 2 до 32). Проверявам всеки елемент, дали сбора на индексите е да кажем 12. Ако е го записвам в помощния масив helpar, ако не е - проверявам следващия елемент.

Когато запълня масива helpar проверявам всички елементи от него, като ги сравнявам по големина и записвам най-малкия като елемент на масива smar.

Когато приключа с тези проверки правя една последна проверка - сравнявам елементите на масива smar и записвам най-малкия елемент като стойност на променливата num. След това изкарвам съобщение "след обработката получения резултат е "стойността на променливата NUM.

НЕ ГО КОПИРАЙ. ИМА ГРЕШКА В ТОЧКА 3, НО НЕ ЗНАЯ КАДЕ Е. ПРОВЕРЕТЕ Т.3.

Редактирано от psycho_666 (преглед на промените)

Забелязах (вероятно и ти ще разбереш), че сбора на индексите на елементите във всеки диагонал е еднакъв. Например ако имаш елементи 1.5 2.4 3.3 4.2 5.1 сбора на индексите е 6 и всички тези елементи лежат на един диагонал. Няма друг диагонал, който да има сбор на индексите 6. Следващия диагонал има сбор 7 (1.6 2.5 3.4 4.3 5.2 6.1) и т.н.

Ей това, което си написал, ако може да ми обясниш, но простичко, като за мен, ще се опитам да помогна с каквото мога.

Ей това, което си написал, ако може да ми обясниш, но простичко, като за мен, ще се опитам да помогна с каквото мога.

ОК. За пример ще дам матрица 7х7...

В централния диагонал индексите на елементите са със сбор 8, а именно:

1:7 2:6 3:5 4:4 5:3 6:2 7:1. (синьо)

В съседния успореден диагонал сбора на индексите е 7 или 9, а именно:

1:6 2:5 3:4 4:3 5:2 6:1 (светло зелено) и съответно

2:7 3:6 4:5 5:4 6:3 7:2 (тъмно зелено)

И т.н. Червения е със сбор на индексите 6. И аз използвам именно това, защото убий ме, не се сещам как по друг начин да определям диагоналите, испоредни на синия.

Редактирано от psycho_666 (преглед на промените)

ОК. За пример ще дам матрица 7х7...

В централния диагонал индексите на елементите са със сбор 8, а именно:

1:7 2:6 3:5 4:4 5:3 6:2 7:1. (синьо)

В съседния успореден диагонал сбора на индексите е 7 или 9, а именно:

1:6 2:5 3:4 4:3 5:2 6:1 (светло зелено) и съответно

2:7 3:6 4:5 5:4 6:3 7:2 (тъмно зелено)

И т.н. Червения е със сбор на индексите 6. И аз използвам именно това, защото убий ме, не се сещам как по друг начин да определям диагоналите, испоредни на синия.

само да те подсетя по горе за тия 2 уравнения S1 и S2 и там, както и аз знам пише, че главният диагонал не е както в твоя случай 1:7 2:6 и тн ами 1:1 2:2 3:3 и тн ... а според мен успореден на главния диагонал е 1:2 2:3 3:4 ... както и 2:1 3:2 4:3 и тн.

да, но ти нали трябва да правиш нещата по диагонали, успоредни не на главния, а на второстепенния, който трябва да е в твоето задание 1:16, 2:15, 3:14...? Нали така? А аз съм използвал думата централен диагонал само, защото той се намира... ами... по средата...

да, но ти нали трябва да правиш нещата по диагонали, успоредни не на главния, а на второстепенния, който трябва да е в твоето задание 1:16, 2:15, 3:14...? Нали така? А аз съм използвал думата централен диагонал само, защото той се намира... ами... по средата...

Да, така е.

ОК. За пример ще дам матрица 7х7...

В централния диагонал индексите на елементите са със сбор 8, а именно:

1:7 2:6 3:5 4:4 5:3 6:2 7:1. (синьо)

В съседния успореден диагонал сбора на индексите е 7 или 9, а именно:

1:6 2:5 3:4 4:3 5:2 6:1 (светло зелено) и съответно

2:7 3:6 4:5 5:4 6:3 7:2 (тъмно зелено)

И т.н. Червения е със сбор на индексите 6. И аз използвам именно това, защото убий ме, не се сещам как по друг начин да определям диагоналите, испоредни на синия.

Не съм проследявал логиката, защото не знам каква е задачата, но при мен този код работи. Само промених размерността на масива на 4, за да не вкарвам толкова много данни.

Въведох за всеки ред числата от 1 до 4 и след избиране на опция 3 от менюто се изведе съобщение :

Sled obrabotka poluchenoto chislo e: 172

Позволих си да използвам кода на psycho_666 за основа. Това е моето решение, като с промяна на константите можеш да регулираш условията на задачата. Има още какво да се дяла по въвеждането и извеждането, но не помня подробностите. Най- голямата промяна е в търсенето на минималните и максималните елементи (опция 3). При мен, както е в момента кода, работи.

uses crt;


const n = 4;
      maximum = 100;
      minimum = -100;
var
      data : array [1..n, 1..n] of real;
      min  : array [1..2*n]     of real;
      i, j, x, o : integer;
      num        : real;

Begin
 x := 0;
 o := 0;
 repeat
  clrscr;
  writeln;
  writeln(' ':20, 'M E N U');
  writeln;
  writeln;
  writeln;
  writeln(' ':20, '1. Vavejdane na masiva.');
  writeln(' ':20, '2. Izwejdane na ekrana na vavedeniq masiv.');
  writeln(' ':20, '3. Obrabotka i izpisvane na rezultata.');
  writeln(' ':20, '4. Izhod.');
  writeln;
  writeln;
  write(' ':20, 'Izberete opcia: ');
  readln(o);
  if ( o < 1 ) or ( o > 4 ) then
   begin
    write(' ':20, 'Izbrali ste ne sashtestvuvashta opcia.');
    readln;
   end;

  if o = 1 then
   begin
    clrscr;
    for i := 1 to n do
     begin
      writeln('Vavedete elementite na ', i, '-iq red:');
      for j := 1 to n do
       begin
        repeat
         write('Vavedete ', j, '-iq element: ');
         readln( data[i,j] );
         if ( data[i,j] < minimum ) or ( data[i,j] > maximum ) then
          begin
           writeln(' ':20, 'Molq vavedete realno chislo mejdu ', minimum, ' i ', maximum, '!');
           write('Vavedete ', j, '-iq element: ');
           readln( data[i,j] );
          end;
        until ( data[i,j] > minimum ) and ( data[i,j] < maximum )
       end;
     end;
    x := 1;
    readln;
   end;

 if o = 2 then
  begin
   if x = 0 then
    begin
     clrscr;
     writeln(' ':20, 'Ne ste vaveli masiv, molq vavedete stojnosti na masiva!');
     readln
    end
   else
    begin
     clrscr;
     for i := 1 to n do
      begin
       for j := 1 to n do write( data[i,j]:2,2, ' ' );
       writeln;
      end;
     readln;
    end;
  end;

 if o = 3 then
  begin
   if x = 0 then
    begin
     clrscr;
     writeln(' ':20, 'Ne ste vaveli masiv, molq vavedete stojnosti na masiva!');
     readln
    end
   else
    for i := 1 to 2*n do min[i] := maximum;
   for i :=1 to n do
    for j := 1 to n do
      if data[i,j] < min[i+j] then min[i+j] := data[i,j];
   num := min[3];
   writeln;
   writeln;
   writeln;
   for i := 3 to 2*n-1 do
    begin
     if num < min[i] then num := min[i];
     writeln ('Minimale element na diagonal nomer (suma na indeksite) ', i, ': ', min[i]);
    end;
   writeln;
   writeln;
   writeln('Naj-golemiqt ot minimalnite elementi e: ', num:2,2);
   readln;
  end;
 until o=4;

 readln;
END.

Редактирано от tyrmyk (преглед на промените)

Не съм проследявал логиката, защото не знам каква е задачата, но при мен този код работи. Само промених размерността на масива на 4, за да не вкарвам толкова много данни.

Въведох за всеки ред числата от 1 до 4 и след избиране на опция 3 от менюто се изведе съобщение :

Sled obrabotka poluchenoto chislo e: 172

Добре, въпроса е, че полученото число трябва да е 1 при въведени числа от 1 до 4.

Добре, въпроса е, че полученото число трябва да е 1 при въведени числа от 1 до 4.

Не съм проследявал логиката, защото не знам каква е задачата, но при мен този код работи.

Ти беше написал, че изобщо не тръгва.

Позволих си да използвам кода на psycho_666 за основа. Това е моето решение, като с промяна на константите можеш да регулираш условията на задачата. Има още какво да се дяла по въвеждането и извеждането, но не помня подробностите. Най- голямата промяна е в търсенето на минималните и максималните елементи (опция 3). При мен, както е в момента кода, работи.

ама не е задължително да се въвеждат стойностите една по една, в смисъл има опция за автоматично генериране на елементи...

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.