Премини към съдържанието
От 1-ви септември 2021 г., вход във форумите ще е възможен само с имейл адрес вместо потребителско име. Ако не помните имейла с който сте се регистрирали, вижте го в настройките на профила си. ×
  • Добре дошли!

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

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

     

Задача на Паскал


pavlin_i

Препоръчан отговор


Имам нужда от малко помощ за една семпла задача на паскал , но явно не е по силите ми ...

Ето и задачата:

 

Да се напише програма ,която по зададени два масива А и В намира елементите на масива С(С+А+В).

 

благодаря предварително :)

Линк към коментара
Сподели в други сайтове

Имам нужда от малко помощ за една семпла задача на паскал , но явно не е по силите ми ...

Ето и задачата:

 

Да се напише програма ,която по зададени два масива А и В намира елементите на масива С(С+А+В).

 

благодаря предварително :)

1. Условието е неясно/неточно

2. Напишете вие нещо, ние ще помагаме по-нататък. Но никой няма да ви напише цялата задача!

Линк към коментара
Сподели в други сайтове

1. Условието е неясно/неточно

2. Напишете вие нещо, ние ще помагаме по-нататък. Но никой няма да ви напише цялата задача!

 

Нека да приемем , че масивите са двумерни и примерно , че ние ще въвеждаме стойностите на двата масива и всеки елемент съответно от масива А да бъде събран със съответния елемет от масива В и да се запише в клетката на масив С пример C[j]:=A[j]+B[j] :D

 

A аз лично стигнах до едно място и нататък не мога и не знам как да продължа.

 

Program ABC;

 

uses crt;

 

Type

         TipMas2=array[1..5,1..10] of real;

 

Var

        i,,j,m,n:integer;

        A,B,C:TipMas2;

 

Begin

      

Clrscr();

 

      Write('задайте броя на редовете: ');Readln(m);

       Write('задайте броя на стълбовете: ');Readln(n);

 

for i:=1 to m do

 

    for j:=1 to n do

 

       begin

 

          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');

      

и до тук не знам нататък какво да правя :|

Линк към коментара
Сподели в други сайтове

 

Нека да приемем , че масивите са двумерни и примерно , че ние ще въвеждаме стойностите на двата масива и всеки елемент съответно от масива А да бъде събран със съответния елемет от масива В и да се запише в клетката на масив С пример C[j]:=A[j]+B[j] :D

 

A аз лично стигнах до едно място и нататък не мога и не знамкак да продължа.

 

Program ABC;

 

uses crt;

 

Type

         TipMas2=array[1..5,1..10] of real;

 

Var

        i,j,m,n:integer;

        A,B,C:TipMas2;

 

Begin

      

Clrscr();

 

      Write('задайте броя на редовете: ');Readln(m);

       Write('задайте броя на стълбовете: ');Readln(n);

 

for i:=1 to m do

 

    for j:=1 to n do

 

       begin

 

          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');

      

и до тък не знам нататък каво да правя :|

СЛед това четете елементите един по един. Първо за първия масив, след това за втория. След това организирате същия цикъл (двоен) и в него сумирате елементите с еднакъв индекс и ги присвоявате на новия масив

Линк към коментара
Сподели в други сайтове

СЛед това четете елементите един по един. Първо за първия масив, след това за втория. След това организирате същия цикъл (двоен) и в него сумирате елементите с еднакъв индекс и ги присвоявате на новия масив

 

Благодаря за отзивчивостта Ви !! Ако може да ви помоля за още една дребна услуга ако може да донапишем програмата понеже пак не знам как да напиша двойния цикъл за да събере 2 -та масива в Pascal.

Съжалявам за нахалството.

 

 

Program ABC;

 

uses crt;

 

Type

         TipMas2=array[1..5,1..10] of real;

 

Var

        i,j,m,n:integer;

        A,B,C:TipMas2;

 

Begin

      

Clrscr();

 

      Write('задайте броя на редовете: ');Readln(m);

       Write('задайте броя на стълбовете: ');Readln(n);

 

for i:=1 to m do

 

    for j:=1 to n do

 

       begin

 

          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');

 

          Readln(A[j]);

 

for i:=1 to m do

 

   for j:=1 to n do

 

      begin

 

          Write('задайте елемента от',i,'-ти ред и',j,'-ти стълб: ');

 

          Readln(B[j]);


Линк към коментара
Сподели в други сайтове

1. това трябва да е така:

for i:=1 to m do
    for j:=1 to n do
       begin
          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');
          Readln(A[i][j]);
end;
end;
for i:=1 to m do
   for j:=1 to n do
      begin
          Write('задайте елемента от',i,'-ти ред и',j,'-ти стълб: ');
          Readln(B[i][j]);
end;
end;

защото вие никъде не ги затваряте тези цикли

А сумирането е просто

for i:=1 to m do
   for j:=1 to n do
C[i][j]=A[i][j]+B[i][j];
end;
end;

И аз никога не съм писал на паскал така че нищо чудно да има някъде синтактични грешки :)

Линк към коментара
Сподели в други сайтове

Благодаря отново за помоща ! Много дружелюбен и приветлив човек сте Благодаря :)

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

Линк към коментара
Сподели в други сайтове

Благодаря отново за помоща ! Много дружелюбен и приветлив човек сте Благодаря :)

 

Може да е от полза на някой цяла зглобена задачка :)

 

Program ABC;

 

uses crt;

 

Type

         TipMas2=array[1..5,1..10] of real;

 

Var

        i,j,m,n:integer;

        A,B,C:TipMas2;

 

Begin

      

Clrscr();

 

      Write('задайте броя на редовете: ');Readln(m);

       Write('задайте броя на стълбовете: ');Readln(n);

 

for i:=1 to m do

 

    for j:=1 to n do

 

       begin

 

          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');

 

          Readln(A[j]);

 

for i:=1 to m do

 

   for j:=1 to n do

 

      begin

 

          Write('задайте елемента от',i,'-ти ред и',j,'-ти стълб: ');

 

          Readln(B[j]);

 

for i:=1 to m do

    for j:=1 to n do

       begin

          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');

          Readln(A[i][j]);

end;

 

for i:=1 to m do

   for j:=1 to n do

      begin

         

          Write('задайте елемента от',i,'-ти ред и',j,'-ти стълб: ');

         

          Readln(B[i][j]);

     

       end;

 

for i:=1 to m do

  

    for j:=1 to n do

 

C[i][j]=A[i][j]+B[i][j];

 

End.

 

 

Само че как да изведем числата от масива С да се изпишат на екрана ???

Линк към коментара
Сподели в други сайтове

1. това трябва да е така:

for i:=1 to m do
    for j:=1 to n do
       begin
          Write('задайте елемента от ',i,'-ти ред и ',,j,'-ти стълб: ');
          Readln(A[i][j]);
end;
end;
for i:=1 to m do
   for j:=1 to n do
      begin
          Write('задайте елемента от',i,'-ти ред и',j,'-ти стълб: ');
          Readln(B[i][j]);
end;
end;

защото вие никъде не ги затваряте тези цикли

А сумирането е просто

for i:=1 to m do
   for j:=1 to n do
C[i][j]=A[i][j]+B[i][j];
end;
end;

И аз никога не съм писал на паскал така че нищо чудно да има някъде синтактични грешки :)

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

Линк към коментара
Сподели в други сайтове

for i:=1 to m do
   Begin

    for j:=1 to n do

Begin
 

     Write('C[j] ');
 

End;

writeln('');

end;

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

Хубаво е понякога да четеш!

 

....

И аз никога не съм писал на паскал така че нищо чудно да има някъде синтактични грешки :)

Линк към коментара
Сподели в други сайтове

Помисли малко ! С коя команда се извежда текст на екрана ? Как да изведем елементи на масив ? Ами както при въвеждането им.

 

 

:Д извинявам се може би е от умората вече

 

writeln('C[j]:10:2);

 

примерно с извеждане до втори знак след запетая :)

for i:=1 to m do

   Begin

    for j:=1 to n do

Begin

 

     Write('C[j] ');

 

End;

writeln('');

end;

Хубаво е понякога да четеш!

 

 

 

Не не се извеждат така. Примерно ще въведеш за m 5  и за n 2 и ще ти изведе 10 пъти

 

Write('C[j]');

 

и след като го изведе ще изчака да натиснеш Enter и ще затвори програмата ;) няма да изведе числата според мен.

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

 

 

 

Благодаря все пак програмата работи !!! Това е важното :) Благодаря ан всички :)

Линк към коментара
Сподели в други сайтове

  • 5 месеца по-късно...

Здравейте, имам малко затруднение с тази задача:

Да се състави главна програма за обработка на три масива IM(10x10) и OM(14x14) и  MB(15,15], където данните са  числа в интервала [-99 -  99]. Съответните подпрограми да извършват следните обработки:

  • извеждане на условието на задачата и името на автора;
  • въвеждане на входните данни;
  • извеждане на входните данни;
  • да се състави подпрограма кoятo нaмиpa cумата нa вcички eлeмeнти, които лежат  над  главния диагонал и са по-малки от зададено от клавиатурата число К, да се намери техния брой. Ако няма такива елементи да се нулират елементите на последния ред.
  • Резултатите да се изведат на екрана;

 Успях да въведа и изведа данните, но с подпрограмата не мога да се справя. Моля за малко помощ. Благодаря предварително :)

Линк към коментара
Сподели в други сайтове

Характерно за главния диагонал е, че индексите за ред са равни на съответните индекси за колона. 

 

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

 

Например ако обхождаш по редове:

 

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

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

.....................................................................

н-1. На ред н-1 това е само елемента от н тата колона

н.    На ентия ред няма такива елементи 

 

Не знам точно как се пише на Паскал, но може да се организира такъв примерно цикъл.

 

Ако i е индекса за ред, а j е индекса за колона

 

За i от 1 до н-1

За j от i+1 до н

.................

.................

.................

следващо j

следващо i

 

Разбира се горното е вярно, ако индексирането започва от 1.

 

Ако индексирането започва от 0 става така:

 

За i от 0 до н-2

За j от i+1 до н-1

.................

.................

.................

следващо j

следващо i

Линк към коментара
Сподели в други сайтове

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

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

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

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

  • Горещи теми в момента

  • Подобни теми

    • от Smile Box
      Здравейте моля ви за помощ опитвах няколко пъти но така и не успях да си направя задачата ето това е условието ако трябва ще платя. Благодаря предварително: 
      Даден е двумерен масив A с m реда и n стълба. Да се състави блок схема на алгоритъм, чрез който се създава нов масив b1, b2 ..., bn, като стойноста на bj е равна на средно аритметичното на отрицателните елементи в j -ия стълб. Да се състави програма по този алгоритъм.
    • от monka987
      Здравейте, имам нужда от помощ с програмата на Паскал. Не мога да измисля само процедурата за намиране броя на мъжете с успех над 4,50, родени през есента. 
      Условието на програмата е:
      За група студенти са зададени име, ЕГН, фак. №, оценките по 10 дисциплини, среден успех. Да се създаде програма, използваща подпрограми за:
      - създаване на файл с информация за групата студенти, без да се въвежда ср. успех;
      - изчисляване на средния успех на всеки един от студентите;
      - намиране брой на мъжете с успех над 4,50, родени през есента.
      Ето до къде стигнах:
      Program StudentiFile;
      type
      student=record
      ime:string[30];
      egn:string[10];
      faknom:string[6];
      ocenki:array[1..10] of real;
      end;
       
      var
      filestud:file of student;
      i,m,n:integer;
      imefail:string[20];
      group:array[1..30] of student;
      stud:student;
      C:char;
       
      Procedure ReadStud(var stud:student);
      var i:integer;
      begin
      with stud do
      begin
      write(' ':5,'Въведете име: ');Readln(ime);
      If(ime='exit') then exit;
      Write(' ':5,'Въведете ЕГН: ');Readln(egn);
      write(' ':5,'Въведете Фак. номер: ');Readln(faknom);
      Writeln(' ':10,'Въведете 10 оценки:');
      for i:=1 to 10 do
      begin
      write('Въведете оценка [',i,']: ');
      readln(ocenki);
      while((ocenki>6) or (ocenki<2)) do
      begin
      writeln('Въведете оценка от 2 до 6!');
      write('Въведете оценка[',i,']: ');
      readln(ocenki);
      end;
      end;
      Readln;
      end;
      end;
       
      Function SredenUsp(stud:student):real;
      var SrUsp,s:real;
      i:integer;
      begin
      s:=0;
      for i:=1 to 10 do
      s:=s+stud.ocenki;
      SrUsp:=s/10;
      end;
       
       
      Procedure WriteOne(stud:student);
      var i:integer;
      begin
      with stud do
      begin
      writeln('Име: ',ime);
      writeln('ЕГН: ',egn);
      writeln('Фак. номер: ',faknom);
      writeln('Оценки:');
      for i:=1 to 10 do
      write(stud.ocenki:4:2,' ':2);
      writeln;
      writeln('Среден успех: ',SredenUsp(stud):4:2);
      writeln;
      end;
      end;
       
       
      Procedure WriteAll;
      var stud:student;
      begin
      Reset(filestud);
      while not EOF(filestud) do
      begin
      Read(filestud,stud);
      WriteOne(stud);
      end;
      close(filestud);
      end;
       
      Procedure NewFile;
      begin
      Rewrite(filestud);
      Close(filestud);
      Writeln('Файлът е създаден!');
      end;
       
      Procedure AddNewStud;
      var stud:student;
      begin
      writeln('Въведете име или exit за край!');
      reset(filestud);
      seek(filestud,filesize(filestud));
      Repeat
      ReadStud(stud);
      If stud.ime<>'exit'
      then Write(filestud,stud);
      until stud.ime='exit';
      Close(filestud);
      end;
       
      Procedure DeleteStud;
      var Delfile:file of student;
      faknom:string[6];
      begin
      write('Въведете фак. номер: ');Readln(faknom);
      Reset(filestud);
      Assign(Delfile,'Del');
      Rewrite(Delfile);
      While not EOF(filestud) do
      begin
      Read(filestud,stud);
      If stud.faknom<>faknom
      then write(Delfile,Stud)
      else Writeln('Данните за студент с фак.номер ',faknom,' са изтрити.');
      end;
      Close(filestud); Close(Delfile); Erase(filestud);
      Rename(Delfile,imefail);
      Writeln;
      End;
       
      BEGIN
      Write('Задайте име на файла: ');
      Readln(imefail);
      Assign(filestud,imefail);
      Repeat
      Writeln(' ':20,'Въведете номера на желаната операция:');
      Writeln(' ':15,'1 - за създаване на нов файл');
      Writeln(' ':15,'2 - за добавяне на студенти');
      Writeln(' ':15,'3 - за изтриване на данни');
      Writeln(' ':15,'4 - за извеждане данните на всички студенти');
      Writeln(' ':15,'5 – намиране броя на мъжете с успех над 4,50, родени през есента’);
      Writeln(' ':15,'0 - за изход от програмата');
      Readln;
      Case C of
      '1':NewFile;
      '2':AddNewStud;
      '3':DeleteStud;
      '4':WriteAll;
      '5':Maje;
      end;
      Until C='0';
      END.
    • от 97joro
      Хора, трябва ми спешно да направя една лесна (според преподавателя) задача на free Pascal, но не съм се занимавал никога с програмиране и за това, ако може някой да помогне със задачата и малко обяснение към нея, ще съм много благодарен.
      Ето и задачата: Да се намери сумата от елементите в отделните стълбове на двумерен масив с m реда и n стълба.
    • от shano__
      Здравейте, имам малко затруднение с тази задача:

      Да се състави главна програма за обработка на три масива IM(10x10) и OM(14x14) и  MB(15,15], където данните са  числа в интервала [-99 -  99]. Съответните подпрограми да извършват следните обработки:
      извеждане на условието на задачата и името на автора; въвеждане на входните данни; извеждане на входните данни; да се състави подпрограма кoятo нaмиpa cумата нa вcички eлeмeнти, които лежат  над  главния диагонал и са по-малки от зададено от клавиатурата число К, да се намери техния брой. Ако няма такива елементи да се нулират елементите на последния ред. Резултатите да се изведат на екрана;  Успях да въведа и изведа данните, но с подпрограмата не мога да се справя. Моля за помощ. Благодаря предварително
    • от Zuzy
      Здравейте, бих искал да ви попитам как може да напиша една програмка: Даден е знаков низ IZR с дължина не повече от 100, представляващ смислено изречение на български език. Думите в изречението са отделени с интервали или запетаи и то завършва с точка. Да се състави програма на Паскал, която пределя най-дългата и най-късата дума в изречението.  Благодаря ви предварително
  • Дарение

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване