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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

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

Featured Replies

И до тук съм, даже се съмнявам и да има нещо вярно... Публикувано изображение

Срокът ми на предаване е до Сряда, мерси предварително :whist:

Има нещо вярно. Само че не виждам къде си декларирал масив C[100], за да получиш някакъв смислен резултат. Защото в условие A се казва елементите да отидат в едномерен масив C. Трябва и малко да помисля над условието, защото не съм сигурен че разбирам еднозначно какво искат да правят - "елементите от масива А със сбор от индексите си четно число"

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

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

Има нещо вярно. Само че не виждам къде си декларирал масив C[100], за да получиш някакъв смислен резултат. Защото в условие A се казва елементите да отидат в едномерен масив C. Трябва и малко да помисля над условието, защото не съм сигурен че разбирам еднозначно какво искат да правят - "елементите от масива А със сбор от индексите си четно число"

Можеби трябва да се направи файл в който се записват данните и от там да се четат за А и С масивът нямам си и аз никаква представа Публикувано изображение

Моля, нека някой помогне Публикувано изображение.

Имам 3 задачи да направя до Вторник, а си нямам грам представа как ще ги направя, та много ще съм благодарен ако някой може да ми помогне:

1.Да се състави програма, която извежда на екрана всички числа в интервала от 0 до N, кратни на зададеното от потребителя число А, при което N също се задава от потребителя.

2. Да се състави програма която генерира всички прости числа в интервала от 0 до N. Краят на интервала да се въвежда от клавиатурата.

3.Да се състави програма която да определя след колко години вложена в банката сума ще достигне 1 000 000 при годишна лихва зададена от клавиатурата.

Здравейте от ново :) Както изглежда Hois учи в ТУ София и има да прави съсщото като моето задание ... Ще прегледам до къде работи сорс кода който е представил и ако се получават всичките условия ще го публикувам, все пак се радвам че някой си е поиграл до някаде и е направил нещо. За мой късмет почнах леко по леко да си припомням особеностите на Паскала от гимназията :) Но колкото повече мозъци мислят толкоз по добре. Като се вгедах по добре в условието моето е малко по различно 1) да се нулират елементите в масива А които са по-големи МАХ елемент на съответната колона от масива В 2) да се определи броя на променените елементи в масива А 3) отпечатване на получените резултати след обработка в т.1 и в т.2 е сега вече и аз се спекох :)

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

Hois това е твоето решение на проблема ти :)

Писан е от Melmak на 15.05.2007

преработи си я към твоите условия за -1000-1000 и където не съответства :)

Program widespread;

Const max=10;

Var  a:array[1..max,1..max] of integer;
     c:array[1..max] of integer;
     n:byte;
     

  procedure uslovie;
  begin
    Write('Uslovie na zada4ata : Da se sastavi programa za obrabotka na masiva A [N, N]');
    Writeln('kadeto dannite sa tzeli chisla v intervala [-500, 500].');
    Write('Da ima saotvetnite podprogrami: ');
    Writeln('-otpechatvane na uslovieto na zadachata');
    writeln('-otpechatvane avtora na zadachata');
    writeln('-otpechatvane na vhodnite danni');
    writeln('a : da se obrazuva ednomeren masiv C [N], elementite na koito sa maksimalnite elementi ot vsjaka kolona na masiva A');
    writeln('b : poluchenijat masiv da se sortira po golemina');
    writeln('-otpechatvane na poluchenite rezultati sled obrabotka A i sled obrabotka B');
    writeln('-rezultata da se zapishe vav file sas ime MAXR.dat');
    writeln;
  end;
  
  procedure autor;
  begin
  writeln('|-----------------------------------------------------------------------------|');
  writeln('|                           Boby                         |');
  writeln('|-----------------------------------------------------------------------------|');
  writeln;
  end;

  procedure entermatrix;
  var i,j:byte;
  begin
  writeln;
  repeat
    write('Vuvedete goleminata (broq redove i stylbove) na masiva (maksimalno ', max, '): ');
    readln(n);
  until (n<=max) and (n>0);
  writeln;
  writeln('Vuvejdane na elementite na matricata A[N,N] : ');
  for i:= 1 to n do
    for j:= 1 to n do
      repeat
        write('A[',i,',',j,'] = '); 
        readln(A[i,j]);
      until (A[i,j] > -501) and (A[i,j] < 501);    
  end;

  procedure displaymatrix;
  var i,j:byte;

  begin
  writeln('Vuvedohte slednata matritza [',n,',',n,']:');
  for i := 1 to n do
    begin
    write('|');
      for j := 1 to n do
        if a[i,j]>99 then write(a[i,j],'  |')
          else if a[i,j]>9 then write(a[i,j],'   |')
            else if a[i,j]<-99 then write(a[i,j],' |')
              else if a[i,j]<-9 then write(a[i,j],'  |')
                else if a[i,j]<0 then write(a[i,j],'   |')
                  else write(a[i,j],'    |');
      writeln;
    end;
  end;

  procedure initializec;
  var i,j:byte;
  begin
  for i := 1 to n do
    begin
      c:=-501;
      for j := 1 to n do
        if a[j,i]>c then c:=a[j,i];
    end;
  
  end;

  procedure printc;
  var i:byte;
  begin
  for i:=1 to n do write(c,' ');
  writeln;
  end;

  procedure sortc;
  var i,j:byte;
      flag:boolean;
      temp_val:integer;
  begin
  repeat
  Flag := true;
   for i := 1 to n - 1 do
    if C > C[i+1] then
      begin
      Flag := false;
      temp_val := c;
      c := C[i+1];
      c[i+1] := temp_val;
      end;
  until Flag;
  end;

  procedure writefile;
  var i:byte;
      outfile:text;

  begin
  assign(outfile,'MAXR.dat');
  rewrite(outfile);
  for i:=1 to n do write(outfile,c,' ');
  writeln(outfile);
  close(outfile);
  end;

Begin
  writeln('Hey !');
  uslovie;
  autor;
  entermatrix;
  displaymatrix;
  initializec;
  writeln('C predi sortirraneto...');
  printc;
  sortc;
  writeln('C sled sortirraneto...');
  printc;
  writefile;
End.

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

1.Да се състави програма, която извежда на екрана всички числа в интервала от 0 до N, кратни на зададеното от потребителя число А, при което N също се задава от потребителя.

Program zadanie1;

Var 
i, a, n: word;

Begin

  writeln('Крайна гранична стойност на числата: ');
  readln(n);

  writeln('Въведете кратна стойност за проверка: ');
  readln(а);

if а<n and a>0 then 
  begin
	for i:= a to n do
	  begin
		if i mod a = 0 then write (', ', i);
	  end;
  end;

if a=n then write(n);
if a>n or a<1 then write('Некоректно зададени стойности');

End.

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

Hois това е твоето решение на проблема ти :wors:

Писан е от Melmak на 15.05.2007

По-голямата част не е писана от мен.

Дефакто онази задача е по-различна във всяко отношение. Единственото общо са двумерните масиви и тяхното обработване с вложени цикли.

- на едната се иплозват реални, на другата цели числа

- на едната изхода се записва във файл, на другата входа се чете от файл

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

@Melmak ®; kardjaliplus Леле благодаря ви страшнооо много, направо не ми се мисли какво щях да правя, мерси мерси мерси, дано някой ден се видим някъде да ви почерпя(най-малкото), мерси пак.ОбичАм ви :wors: @kardjaliplus да за жалост къде попаднах и аз незнам :wors:, а ти кой си, къде си :wors:

Ще е малко по-късно. kardjaliplus, дай за всеки случай пълното условие на новата задача.

Да се състави програма за обработка на два масива (матрици) A[N,N] и B[N,N] , където данните са цели числа в интервала [-1000-1000]. Да се извършват следните действия: - отпечатване на условието на задачата - отпечатване на автора на програмата - въвеждане на входни данни - отпечатване на входните данни 1) да се нулират елементите в масива А които са по-големи от МАХ елемент на съответстващатата колона от масива В 2) да се определи броя на променените елементи в масива А - отпечатване на получените резултати след обработка на т.1 и т.2

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

Задача 2. Да се състави програма която генерира всички прости числа в интервала от 0 до N. Краят на интервала да се въвежда от клавиатурата.

Program pchisla;

var n,i,j:longint;
	flag:boolean;

Begin

repeat
  writeln('Vuvedete N>1');
  readln(n);
until (n>1);

writeln;

for i:=2 to n do 
  begin
	flag:=true;
	for j:=2 to i-1 do
	  if i mod j= 0 then flag:= false;
	if flag then writeln(i);
  end;
 

End.

Благодаря ти, благодарение на теб почти ги разбрах и имам някаква бегла идея как да направя другата, мерси пак Публикувано изображение

@Melmak ® Благодаря и на теб човече.

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

alex0, ето и третата:

Program lihva;

const MaxLongInt=2147483647;

var n,s:real;
	l:longint;

Begin

repeat
  writeln('Vuvedete vlogenata suma:');
  readln(n);
until (n>0);

repeat
  writeln('Vuvedete godishnata lihva v procenti:');
  readln(s);
until (s>0);

l:=0;

repeat
n:=n+n*s/100;
inc(l);
until (n> 999999) or (l=MAXLONGINT);

if (n<1000000) and (l=MAXLONGINT) then writeln ('Nqma da zabogateete v obozrimo budeshte - ',MAXLONGINT);
writeln(l,' Godini');

End.

Ако не иска да се компилира, махни const MaxLongInt=2147483647.

Да се състави програма за обработка на два масива (матрици) A[N,N] и B[N,N] , където данните са цели числа в интервала [-1000-1000]. Да се извършват следните действия:

- отпечатване на условието на задачата

- отпечатване на автора на програмата

- въвеждане на входни данни

- отпечатване на входните данни

1) да се нулират елементите в масива А които са по-големи от МАХ елемент на съответстващатата колона от масива В

2) да се определи броя на променените елементи в масива А

- отпечатване на получените резултати след обработка на т.1 и т.2

ОК, почвам я. Тъй като елементите са с ограничена големина лесно ще се получи най-голямото число от едната и после ще го сравним с елементите в другата.

Фактически това може да стане в един цикъл, който ще сменя колоните. Ще има и променлива в която ще броим промените.

Ето я същинската част:

for i:= 1 to N do
 begin
 MaxEl:=-1001;
 for j:=1 to N do
 if b[i,j]> MaxEl then MaxEl:= b[i,j]; {Izvlichame MAX elementa ot kolonata na masiv B}

 for j:=1 to N do
 if a[i,j] > MaxEl then
   begin
   a[i,j]:=0;
   inc(count);
   end;
 end;

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

Няма да ги пиша, ако са ти ясни. В count броим промените. Не забравяй да занулиш брояча, count преди този модул !

i адресира колоната, j реда.

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

Не може ли сам да го тестваш? Не за друго, ами просто не ми се занимава да чета код с половин километър коментари. А и мисля че всичко трябва да е ОК. Виж ако има някакви проблеми ще ги обсъдим.

Здравейте, имам да правя курсова задача с масиви, но има 2 неща които ме притесняват в нея тъй като въобще не сме ги учили в училище, а и на лекцийте все още не сме ги взели, та ще съм ви много благодарен ако някой ми помогне до колкото може с нея Публикувано изображение :

Да се състави програма за обработка на масива Е[10,10] където данните са реални числа в интервала -1000,1000

Съставената програма да извършва следните действия:

¤Отпечатване на условието на задачата и името на автора

¤Въвеждане на входните данни

¤Отпечатване на входните данни

¤А) да се образува едномерен масив С, елементите на който са елементите от масива А със сбор от индексите си четно число

¤Б)Полученият масив да се сортира по големина

¤Отпечатване на получените резултати след обработка

¤Входните данни да се четат от файла с име DATA.DAT

Ето я задачата. Данните се четат от файл. Не са писани процедурите за име на група и други бумащини.Само четенето, отпечатването и обработлата на масивите.

За да я пуснете ви трябва този тестов файл или подобен, поставен в текущата директория. Най вероятно това ще е където поставяте .pas файловете:

1.2   55   3 5 9 7 8 7 9 0
105  42   3 5 9 7 9 8 9 1
3	 314 3 5 9 7 0 9 8 2
30	6	3 5 9 7 0 0 7 3
40	7	3 5 9 7 1 1 6 4
50	56   3 5 9 3 2 2 5 5
-32   10   3 5 9 4 3 3 4 6
11	-11  3 5 9 5 4 4 3 7
1	 44   3 5 9 6 5 5 2 8
0	 77   3 5 2 7 6 6 1   -200.7

Program ron;

const 
  k=10;

label
  1001;

var
  f:text;
  t:char;
  i,j:byte;
  x:real;
  err:integer;
  s:string;
  a:array[1..k,1..k] of real;
  c:array[1..50] of real;

Begin

assign(f,'DATA.DAT');
reset(f);

s:='';
i:=1;
j:=0;

while (not EOF(f)) and (i+j<2*k) do
	begin
	  while not EOLN(f) do
			begin
			read(f,t);
			if t<>' ' then s:=s+t else goto 1001;
			end;
	readln(f);
1001:
	if s<>'' then
		begin
		if (i<k) or (i=k) then 
				if j<k then j:=j+1 else
				begin
				j:=1;
				i:=i+1;
				end;		 
		Val(s,a[i,j],err);
		if (a[i,j]<-1000) or (a[i,j]>1000) then err:=1;
		if (err<>0) then 
		  begin
		  writeln('Nevalidni vhodni danni...',s);
		  exit;
		  end;
		s:='';
		end;
	end;

close(f);

if (i+j<2*k) then 
  begin
  writeln('Nedostatuchno vhodni danni...');
  exit;
  end;


writeln;
repeat
write('Vuvedete nomer na kolona za pregled: 1..',k,'. Vuvedete 0 za izhod.');
readln(err);
if (err>0) and (err<k+1) then
for i:=1 to k do
writeln(a[i,err]:5:10);
until err=0;

err:=1;

for i:=1 to k do
  for j:=1 to k do
	if (i+j) mod 2 =0 then
	  begin 
	  c[err]:= a[i,j];
	  inc(err);
	end;


writeln;
writeln('Otpechatvane na C predi sortiraneto...');
for i:=1 to err-1 do writeln(c[i]:5:10);
writeln;

for i:=1 to err-2 do
	for j:= i+1 to err-1 do
	  if c[i]>c[j] then
		begin
		x:= c[j];
		c[j]:=c[i];
		c[i]:=x;
		end;

writeln;
writeln('Otpechatvane na C sled sortiraneto...');
for i:=1 to err-1 do writeln(c[i]:5:10);
writeln;

End.

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

kardjaliplus, заповядай:

Program ocz;

const
  n=3;

var
  i,j:byte;
  r,count:integer;
  a:array[1..n,1..n] of integer;
  b:array[1..n,1..n] of integer;

Begin

writeln('Vuvegdane na matrica A');

for i:=1 to n do
  for j:=1 to n do
	begin
	  repeat
	  write('Vuvedete chislo (-1000;+1000) za kolona ',i,' red ',j,' ');
	  readln(r);
	  until (r>-1001) and (r<1001);
	a[i,j]:=r;
	end;

writeln('Vuvegdane na matrica B');

for i:=1 to n do
  for j:=1 to n do
	begin
	  repeat
	  write('Vuvedete chislo (-1000;+1000) za kolona ',i,' red ',j,' ');
	  readln(r);
	  until (r>-1001) and (r<1001);
	b[i,j]:=r;
	end;

repeat
write('Vuvedete nomer na kolona za pregled na matrica A: 1..',n,'. Vuvedete 0 za izhod.');
readln(r);
if (r>0) and (r<n+1) then
for i:=1 to n do
writeln(a[r,i]);
until r=0;


repeat
write('Vuvedete nomer na kolona za pregled na matrica B: 1..',n,'. Vuvedete 0 za izhod.');
readln(r);
if (r>0) and (r<n+1) then
for i:=1 to n do
writeln(b[r,i]);
until r=0;

count:=0;

for i:= 1 to N do
begin
r:=-1001;
for j:=1 to N do
if b[i,j]> r then r:= b[i,j]; {Izvlichame MAX elementa ot kolonata na masiv B}

for j:=1 to N do
if a[i,j] > r then
   begin
   a[i,j]:=0;
   inc(count);
   end;
end;



repeat
write('Vuvedete nomer na kolona za pregled na matrica A: 1..',n,'. Vuvedete 0 za izhod.');
readln(r);
if (r>0) and (r<n+1) then
for i:=1 to n do
writeln(a[r,i]);
until r=0;


repeat
write('Vuvedete nomer na kolona za pregled na matrica B: 1..',n,'. Vuvedete 0 za izhod.');
readln(r);
if (r>0) and (r<n+1) then
for i:=1 to n do
writeln(b[r,i]);
until r=0;

writeln('Promeni: ',count);


End.

Уж работи, но си я тествай внималтелно.

Да се състави програма за обработка на масива А[13], B[18], C[20], съставен от реални числа със стойности в интервала [0, 99.9]. Да се извършват следните действия: -отпечатване на условието и автора на задачата -въвеждане на входните данни -отпечатване на входните данни -масивите A, B, C да се свият посредством изключване на елементи <15.5 -получените масиви да се препишат в нов масив D[K,3], като липсващите елементи да се заместят с 0 -отпечатване на получените резултати след обработката -входните данни да се прочетат от файл

Право да ти кажа, не ми се пишат повече подобни програми. Поне не скоро. Айде, останалото как да е, но последната точка е отвратителна. При работа с файл, могат да възникнат всякакви изключения и усложнения. Дефакто това е 1/3 от задачата. Без дори да споменавам че формата не е уточнен.

Да се състави програма за обработка на масива А[13], B[18], C[20], съставен от реални числа със стойности в интервала [0, 99.9]. Да се извършват следните действия:

-отпечатване на условието и автора на задачата

-въвеждане на входните данни

-отпечатване на входните данни

-масивите A, B, C да се свият посредством изключване на елементи <15.5

-получените масиви да се препишат в нов масив D[K,3], като липсващите елементи да се заместят с 0

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

-входните данни да се прочетат от файл

Я ми разясни първата част от условието на задачата. масива А[13], B[18], C[20], това три едномерни масивИ ли са или ??? а и нали входните данни уж се въвеждат, а отделно да може да се вземат и от файл ли? и как е името на този файл? ние ли го създаваме или проверяващият си го е създал предварително?

Масивите както изглежда са едномерни, по самото условие според мен входните данни трябва да се четат от клавиатурата, да се запишат във файл /с произволно име/ и после да се изтеглят от него към същинската част на задачата. Твърде много логика има в тези задачи че на половината се обърквам до къде съм стигнал :grimace:

Задачата спешно ли ти трябва ? Мога да я напиша утре без проблем. Тази ще ми е последната за доста време напред, така че си прецени приоритетите.

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

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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