Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Информатиката на "Черноризец Храбър"

Информатиката на "Черноризец Храбър"

Мнениеот Anonimen » 30 Окт 2010, 17:35

Моля за помощ. От два дни се мъча да реша тази задача:
При кой стойности на реалните променливи a,b и c при изпълнението на следния програмен фрагмент
в
:


въведи a; въведи b; въведи n;
x:=a;
докато х<b изпълнявай
(х:=х+(b-a)/ n ; отпечатай '*')



ще се отпечатат най-много *?
А)а=0, b=1, n=3
Б)a=0, b=2, n=5
В)a=1, b=2, n=4
Г)a=1, b=5, n=3
Д)a=0, b=5, n=2


Надявам се да нямам правописни грешки. Благодаря предварително
:oops: :oops: съжалявам, изпуснал съм едно n :oops: :oops:
Последна промяна Anonimen на 30 Окт 2010, 18:36, променена общо 4 пъти
Anonimen
Нов
 
Мнения: 8
Регистриран на: 23 Авг 2010, 11:17
Рейтинг: 0

Re: Информатиката на "Черноризец Храбър"

Мнениеот allier » 30 Окт 2010, 18:14

Има правописни грешки, по-точно не си написал/а условието правилно. Виж го пак и препиши точно.
allier
Математиката ми е страст
 
Мнения: 712
Регистриран на: 13 Апр 2010, 09:10
Рейтинг: 15

Re: Информатиката на "Черноризец Храбър"

Мнениеот prodanov » 30 Окт 2010, 18:16

Шибано условие.

Първо по-разбираем вариант:
Код: Избери целия код
f(a,b){
  int i,x = a;
  for(i=0; x<b; i++)
    x=x+(b-a)
  return i;
}


При първата итерация x ще бъде равно на b, тъй като първоначално x приема стойноста на a. Изразено математически, първата итерация изглежда така:
x = x+(b-a) = a+(b-a) = a+b-a = b

След което се отпечатва звезда (или променливата се увеличава в моят случай), но втора итерация няма, защото условието не е изпълнено: x=b. => една звезда.

Задачата ми се струва твърде нелогична. Това n за какво е?
prodanov
Напреднал
 
Мнения: 470
Регистриран на: 09 Юли 2010, 21:03
Рейтинг: 10

Re: Информатиката на "Черноризец Храбър"

Мнениеот Martin Nikovski » 30 Окт 2010, 18:17

За какво служи n :?: ;)
Аватар
Martin Nikovski
Математиката ми е страст
 
Мнения: 518
Регистриран на: 04 Юли 2010, 16:08
Местоположение: България, София
Рейтинг: 40

Re: Информатиката на "Черноризец Храбър"

Мнениеот allier » 30 Окт 2010, 18:18

То има и едно неизползвано c в условието ... "За кои стойности на a,b и c ..."
allier
Математиката ми е страст
 
Мнения: 712
Регистриран на: 13 Апр 2010, 09:10
Рейтинг: 15

Re: Информатиката на "Черноризец Храбър"

Мнениеот prodanov » 30 Окт 2010, 19:37

Нека [tex]c = \frac{b-a}{n}[/tex] e константа, стойностите ѝ са:

а) c = [tex]\frac{1}{3}[/tex]

б) c = [tex]\frac{2}{5}[/tex]

в) c = [tex]\frac{1}{4}[/tex]

г) c = [tex]\frac{4}{3}[/tex]

д) c = [tex]\frac{5}{2}[/tex]

Все положителни. Сиреч няма да има безкрайност, кофти.

[tex]x = x + \frac{b-a}{n} = x + c[/tex]

Сумата [tex]S[/tex] на функцията по-горе изглежда по следният начин:
[tex]S = x + c + c + c + c...[/tex] но x приема стойноста на 'а' първата итерация =>
[tex]S = a + c + c + c + c...[/tex]
нека с m означим броя повторения. [tex]m >0[/tex] за всяко едно от условията!

Тогава стойноста на [tex]x[/tex] спрямо броя повторенията [tex]m[/tex] за всяка подточка са съответно:

a) [tex]x_m = a + mc = 0 + mc = m\frac{1}{3}[/tex]
б) [tex]x_m = a + mc = 0 + mc = m\frac{2}{5}[/tex]
в) [tex]x_m = a + mc = 1 + mc = 1 + m\frac{1}{4}[/tex]
г) [tex]x_m = a + mc = 1 + mc = 1 + m\frac{4}{3}[/tex]
д) [tex]x_m = a + mc = 0 + mc = m\frac{5}{2}[/tex]

условията за всяка итерация са следните:

[tex]mc < b[/tex]

съответно:
а) [tex]m\frac{1}{3} < 1[/tex] <=>[tex]m < 3[/tex]
б) [tex]m\frac{2}{5} < 2[/tex] <=> [tex]m < 5[/tex]
в) [tex]1 + m\frac{1}{4} < 2[/tex] <=> [tex]m < 4[/tex]
г) [tex]1 + m\frac{4}{3} < 5[/tex] <=> [tex]m < 3[/tex]
д) [tex]m\frac{5}{2} < 5[/tex] <=>[tex]m < 2[/tex]

Важно нещо: Цикълът е конструиран по следният начин - Първо е проверката, след това операцията, след това извеждане резултата. Тогава в написаното горе, дясната страна трябва да бъде увеличена с единица!

Окончателно:
а) [tex]m = <1, 2, 3>[/tex]
б) [tex]m = <1, 2, 3, 4, 5>[/tex]
в) [tex]m = <1, 2, 3, 4>[/tex]
г) [tex]m = <1, 2, 3>[/tex]
д) [tex]m = <1,2>[/tex]


Едит:
Драснах ти и програмката на Паскал
Изображение
Код: Избери целия код
program pr2213925;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const arra: array[0..4] of Byte = (0,0,1,1,0);
      arrb: array[0..4] of Byte = (1,2,2,5,5);
      arrn: array[0..4] of Byte = (3,5,4,3,2);

function test(a,b,n:Integer):Integer;
var x:Extended;
begin
  Result:=0;
  x:=a;

  while(x<b) do begin
    x:= x+((b-a) / n);
    inc(Result);
  end;
end;

var i:Integer;
begin
  for i := 0 to 4 do Writeln('Pri ',AnsiChar((Chr(i+$61))),') iteraciite sa: ',test(arra[i],arrb[i],arrn[i]));
  Readln;
end.
prodanov
Напреднал
 
Мнения: 470
Регистриран на: 09 Юли 2010, 21:03
Рейтинг: 10

Re: Информатиката на "Черноризец Храбър"

Мнениеот Anonimen » 30 Окт 2010, 20:39

prodanov написа:Нека [tex]c = \frac{b-a}{n}[/tex] e константа, стойностите ѝ са:

а) c = [tex]\frac{1}{3}[/tex]

б) c = [tex]\frac{2}{5}[/tex]

в) c = [tex]\frac{1}{4}[/tex]

г) c = [tex]\frac{4}{3}[/tex]

д) c = [tex]\frac{5}{2}[/tex]

Все положителни. Сиреч няма да има безкрайност, кофти.

[tex]x = x + \frac{b-a}{n} = x + c[/tex]

Сумата [tex]S[/tex] на функцията по-горе изглежда по следният начин:
[tex]S = x + c + c + c + c...[/tex] но x приема стойноста на 'а' първата итерация =>
[tex]S = a + c + c + c + c...[/tex]
нека с m означим броя повторения. [tex]m >0[/tex] за всяко едно от условията!

Тогава стойноста на [tex]x[/tex] спрямо броя повторенията [tex]m[/tex] за всяка подточка са съответно:

a) [tex]x_m = a + mc = 0 + mc = m\frac{1}{3}[/tex]
б) [tex]x_m = a + mc = 0 + mc = m\frac{2}{5}[/tex]
в) [tex]x_m = a + mc = 1 + mc = 1 + m\frac{1}{4}[/tex]
г) [tex]x_m = a + mc = 1 + mc = 1 + m\frac{4}{3}[/tex]
д) [tex]x_m = a + mc = 0 + mc = m\frac{5}{2}[/tex]

условията за всяка итерация са следните:

[tex]mc < b[/tex]

съответно:
а) [tex]m\frac{1}{3} < 1[/tex] <=>[tex]m < 3[/tex]
б) [tex]m\frac{2}{5} < 2[/tex] <=> [tex]m < 5[/tex]
в) [tex]1 + m\frac{1}{4} < 2[/tex] <=> [tex]m < 4[/tex]
г) [tex]1 + m\frac{4}{3} < 5[/tex] <=> [tex]m < 3[/tex]
д) [tex]m\frac{5}{2} < 5[/tex] <=>[tex]m < 2[/tex]

Важно нещо: Цикълът е конструиран по следният начин - Първо е проверката, след това операцията, след това извеждане резултата. Тогава в написаното горе, дясната страна трябва да бъде увеличена с единица!

Окончателно:
а) [tex]m = <1, 2, 3>[/tex]
б) [tex]m = <1, 2, 3, 4, 5>[/tex]
в) [tex]m = <1, 2, 3, 4>[/tex]
г) [tex]m = <1, 2, 3>[/tex]
д) [tex]m = <1,2>[/tex]


Едит:
Драснах ти и програмката на Паскал
Изображение
Код: Избери целия код
program pr2213925;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const arra: array[0..4] of Byte = (0,0,1,1,0);
      arrb: array[0..4] of Byte = (1,2,2,5,5);
      arrn: array[0..4] of Byte = (3,5,4,3,2);

function test(a,b,n:Integer):Integer;
var x:Extended;
begin
  Result:=0;
  x:=a;

  while(x<b) do begin
    x:= x+((b-a) / n);
    inc(Result);
  end;
end;

var i:Integer;
begin
  for i := 0 to 4 do Writeln('Pri ',AnsiChar((Chr(i+$61))),') iteraciite sa: ',test(arra[i],arrb[i],arrn[i]));
  Readln;
end.

Благодаря за стахотното решение.
Anonimen
Нов
 
Мнения: 8
Регистриран на: 23 Авг 2010, 11:17
Рейтинг: 0


Назад към Състезания за 7, 8 клас



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)