Премини към съдържанието
  • Добре дошли!

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

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

     

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


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


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

Ръчното въвеждане е това, което се изисква за по-сигурна проверка. За да правя проверка на моя код въвеждах всички стойности да са 99, с изключение на един ред. В тоя ред всички стойности са 10 с изключение на един елемент със стойност 15. По тоя ачин програмата трябва да ми изкара резултат 15. Тя ми изкара при 1-вия опит над 27000, при следващите опити програмата просто забиваше в момента, в който въведа в менюто 3 и натисна ентър. А за да можеш да направиш реална проверка пред твоя(та) мил(а) преподавател(ка) ще трябва да въвеждаш на ръка пример с предварително ясен краен резултат. Ако всички числа са случайни как ще знаеш, че програмата работи правилно?! :rolleyes:
Линк към този отговор
Сподели в други сайтове
  • Отговори 622
  • Създадено
  • Последен отговор

Потребители с най-много отговори

Потребители с най-много отговори

Популярни публикации

Абе човек, тествай програмата и тогава спори. Тя е толкова елементарна, че не знам защо не я разбираш. Оправи синтаксиса, ако дава грешки. Може да съм изпуснала някой ";". Добави begin-end, ако трябва

Да, и така става Кен. Изчисляване на лихвата по формулата p := p * (1+y/100); Няма защо, и аз те подведох малко. Като се вложи мисъл нещата се получават.

Пробвай следното: program Suma; var sum, pro : real; god : integer; begin writeln('Въведете сумата на влог'); readln(sum); writeln('Въведете лихвен процент'); readln(pro); god := 0; if sum < 100

Публикувани изображения

заданието е следното : Да се състави програма, която да определя след колко години вложена в банката сума (X) ще достигне 1 000 000, при годишна лихва (Y).Сумата и лихвата в проценти да се въвеждат от клавиатурата.

значи аз пробвах да напиша някакъв код, но се получи пълна каша с глупости, за това очаквам съвети как да го редактирам :

program Suma;
var
x,y,z : real;
br,p : integer;
begin
writeln('Vyvedete vlojenata suma ');
readln(x);
writeln('Vyvedete lihvata v procenti ');
readln(y);
p := 0;
br := 0;
while p=1000000 do
begin
Br := br+1;
z:= x*y;
p:=z+x;
end;
writeln('sled ',br,' godini sumata dostigna 1 000 000',br:4:2);
readln;
end.
Линк към този отговор
Сподели в други сайтове

заданието е следното : Да се състави програма, която да определя след колко години вложена в банката сума (X) ще достигне 1 000 000, при годишна лихва (Y).Сумата и лихвата в проценти да се въвеждат от клавиатурата.

значи аз пробвах да напиша някакъв код, но се получи пълна каша с глупости, за това очаквам съвети как да го редактирам :

program Suma;
var
x,y,z : real;
br,p : integer;
begin
writeln('Vyvedete vlojenata suma ');
readln(x);
writeln('Vyvedete lihvata v procenti ');
readln(y);
p := 0;
br := 0;
while p=1000000 do
begin
Br := br+1;
z:= x*y;
p:=z+x;
end;
writeln('sled ',br,' godini sumata dostigna 1 000 000',br:4:2);
readln;
end.

Промени условието на цикъла на :

while p<1000000 do

че тка не се изпълнява нито веднъж.

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

това го промених но ми дава грешка при формулата дето съм "съставил" p:=z+x пише "Error 26 : Type mismatch"


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

това го промених но ми дава грешка при формулата дето съм "съставил" p:=z+x пише "Error 26 : Type mismatch"

Дефинирай и P като REAL

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

Пробвай следното:

program Suma;
var 
sum, pro : real;
god : integer;
begin
writeln('Въведете сумата на влог');
readln(sum);
writeln('Въведете лихвен процент');
readln(pro);
god := 0;
if sum < 100000 then 
begin
repeat
sum := sum + sum*pro/100
god: = god + 1
until sum > 1000000
end;
write('След ',god,' години сумата достига ');
writeln(sum:7:2);
end.

ПП: Вкарай с else съобщение, ако си въвел сума > 1000000

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

по принцип този код работи, но не изпълнява напълно условието на заданието, в смисал не показва след колко години сумата ще достигне 1 000 000... и си мисля, че трябва да се използва оператора while-do, а не if-then ... също така трябва и брояч...

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

по принцип този код работи, но не изпълнява напълно условието на заданието, в смисал не показва след колко години сумата ще достигне 1 000 000... и си мисля, че трябва да се използва оператора while-do, а не if-then ... също така трябва и брояч...

Помисли пак!

god - брояч на годините

if then - прави първоначална проверка за сумата която си въвел (дали е под 1000000)

repeat until - това е цикъла с който излизаш при достигане или надвишаване на посочената сума (алтернатива на do while)

sum := sum + sum*pro/100 - това е формулата ти

ПП: Дефинираш параметри които изобщо не са ти нужни, трябва ти с три числа работиш.

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

така де, но резултата който трябва да се получи е при въвеждане на сума например 20 и годишна лихва 8 да изпише примерно след 20 години сумата достигна (приблизително достигна) 1 000 000, а не след първата година колко е станала сумата ... разбираш ли ?

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

така де, но резултата който трябва да се получи е при въвеждане на сума например 20 и годишна лихва 8 да изпише примерно след 20 години сумата достигна (приблизително достигна) 1 000 000, а не след първата година колко е станала сумата ... разбираш ли ?

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

ПП: Завъртях знака на until! Най-вероятно от това идва объркването ти.

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

var
  x, y, z,p: real;
  br: integer;
begin
  writeln('Vyvedete vlojenata suma ');
  readln(x);
  writeln('Vyvedete lihvata v procenti ');
  readln(y);
  p := x;
  br := 0;
  while p < 1000000 do
  begin
    Br := br + 1;
    p := p * (1+y/100);
  end;
  writeln('sled ', br, ' godini sumata dostigna 1 000 000', br);
  readln;
end.

Този код работи.

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

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

ПП: Завъртях знака на until, беше обърнат!

Най-вероятно от това идва объркването ти.

да :mad: благодаря ти много за указаната помощ ! и извинявай ако много съм те ядосал/а :mad:

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

Този код работи.

Да, и така става Кен. Изчисляване на лихвата по формулата p := p * (1+y/100);

да :mad: благодаря ти много за указаната помощ ! и извинявай ако много съм те ядосал/а :mad:

Няма защо, и аз те подведох малко. Като се вложи мисъл нещата се получават. :lol6:
Линк към този отговор
Сподели в други сайтове

Done . Но пак не излиза желания резултат. Формулата ме съмнява много ...

Формулата ти не е вярна

z:= x*y;
Трябва да имаш деление на 100

Послушай yvsot, макар аз бих вложила всичко в цикъл с while, но въпрос на предпочитания.

П.П. Докато се разправям с някои мои миниатюрни притурки, Ken вече ти е решил задачката.

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

Да се състави програма за обработка на два масива А[4,4] и В[8,8],където данните са реални числа в интервала [-99.9-99.9].Съответните подпрограми да извършват следните действия: -отпечатване на условието на задачата и името на автора на програмата -въвеждане на входните данни -отпечатване на входните данни -а)да се нулират елементите в масива А,които са по-големи от средно аритметичното от елементите на съответната колона от масива В, б)да се определи броя на променените елементи в масива А -отпечатване на получените резултати след обработката а) и след обработката б) -резултата да се запише във файл със зададено име Помощ....

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

Да се състави програма за обработка на два масива А[4,4] и В[8,8],където данните са реални числа в интервала [-99.9-99.9].Съответните подпрограми да извършват следните действия:

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

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

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

-а)да се нулират елементите в масива А,които са по-големи от средно аритметичното от елементите на съответната колона от масива В, б)да се определи броя на променените елементи в масива А

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

-резултата да се запише във файл със зададено име

Помощ....

Това са елементарни неща. Просто е срамота да се търси помощ за нещо подобно. За какво учиш ?

Вземи седни и ги научи. Само ще ти е от полза.

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

Да се състави програма на Паскал, която въвежда целочислени елементи на масива D[10], след което да се нулират отрицателните елементи. Да се отпечата първоначалния и нулирания масив. Блок схемата съм я объркал отначало и не зная как да я направя

aaaaaa.bmp

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

Да се състави програма на Паскал, която въвежда целочислени елементи на масива D[10], след което да се нулират отрицателните елементи. Да се отпечата първоначалния и нулирания масив.

Блок схемата съм я объркал отначало и не зная как да я направя

ПОМОЩ

Здравей,

1) Сложи си етикет на входа и на изхода, за да се различават. Например: "Вход: D[10]"

2) Махни от входа брояча i.

3) След това го инициализирай с 0 (обикновено масивите започват с нулев елемент, освен ако не е деклариран другояче).

4) Оправи си операторите за присвояване в цикъла.

5) Сложи "край".

Други грешки или неточности не виждам... Освен ако не се изисква проверка на входа дали въведеното число е от целочислен тип ?

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

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

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

Понеже искам тази константа n , която tyrmyk е задал, да се въвежда от клавиатурата аз се пробвах да го направя, но ми дава грешка при присвояването на n:=m а именно :

if o = 1 then
   begin
    clrscr;
    writeln('Vyvedete chislo ot 1 do 16');
    readln(m);
    if ( m <= 0 ) or ( m > 16 ) then
     begin
     writeln('Vyvedete chislo v intervala ot 1 do 16 vkliuchitelno');
    end
    else
     begin
     n:=m;
    end;

а ето как седи този мой неуспешен опит в целия текст:

uses crt;


const n = 16;
      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,m        : real;

Begin
Writeln('Programa');
 x := 0;
 o := 0;
 repeat
  clrscr;
  writeln;
  writeln(' ':20, 'M E N U');
  writeln;
  writeln(' ':20, '1. Vyvedete broi redove i stylbove na masiva.');
  writeln(' ':20, '2. Vyvejdane na masiva.');
  writeln(' ':20, '3. Izwejdane na ekrana na vavedeniq masiv.');
  writeln(' ':20, '4. Obrabotka i izpisvane na rezultata.');
  writeln(' ':20, '5. Izhod.');
  writeln;
  writeln;
  write(' ':20, 'Izberete opcia: ');
  readln(o);
  if ( o < 1 ) or ( o > 5 ) then
   begin
    write(' ':20, 'Izbrali ste ne sashtestvuvashta opcia.');
    readln;
   end;
  if o = 1 then
   begin
    clrscr;
    writeln('Vyvedete chislo ot 1 do 16');
    readln(m);
    if ( m <= 0 ) or ( m > 16 ) then
     begin
     writeln('Vyvedete chislo v intervala ot 1 do 16 vkliuchitelno');
    end
    else
     begin
     n:=m;
    end;
 if o = 2 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 = 3 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]:4:2, ' ' );
       writeln;
      end;
     readln;
    end;
  end;

 if o = 4 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]:4:2);
    end;
   writeln;
   writeln;
   writeln('Naj-golemiqt ot minimalnite elementi e: ', num:4:2);
   readln;
  end;
 until o=5;

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

Добавете отговор

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

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

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

Информация

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