Страница 3 из 4

.

Добавлено: 26 окт 2007, 09:23
BBB
Вот на таком псевдокоде:серия

Код: Выделить всё

MaxSeriesLen := 0;
CurrSeriesLen := 0;
цикл (пока не конец текста)
  ch := (всять следующий символ текста)
  if (ch - буква?) then
    CurrSeriesLen := 0
  else begin
    CurrSeriesLen := CurrSeriesLen + 1;
    if (CurrSeriesLen > MaxSeriesLen) then
      MaxSeriesLen := CurrSeriesLen;
  end;
end (цикл)

Получили: MaxSeriesLen - длина содержащейся в тексте максимальной серии символов, отличных от букв.

Re: Помогите в решении простейших задач

Добавлено: 26 окт 2007, 11:49
Хыиуду
Quarter писал(а):Пожалуйста проверти правильность решения задач.
1)100
Вычислить: S 1/i^2, где S - сумма.
i=1

const n=100;
var i:integer; s:real;
begin
write('s=');
readln(s);
s:=0;
for i:=1 to n do
s:=s+1/i*i;
writeln('s=',s);
end.
этот кусок -
write('s=');
readln(s);
абсолютно лишний, потому что потом s все равно обнуляется
2)Дано натуральное n. Сколько цифр в числе n?

var
i,n:LongInt;
begin
Writeln('vvedite chislo');
ReadLn(n);
i:= 1;
while n>=10 do
begin
n:=n div 10;
Inc(i);
end;
Writeln('i=', i);
ReadLn;
end.
Может быть, здесь требуется показать умение работать с числами, но искомое вычисляется по формуле length(str(abs(n))) (abs - это модуль, на случай, если число окажется отрицательным, чтобы не получить лишнюю цифру за счет минуса. Знаю, что число натуральное, но некоторые преподаватели любят забывать ими же поставленные условия)
3)Даны натуральное число n, действительные числа a[1],...,a[n]. Вы-
числить a[1]+...+a[n].

var
N: integer;
A: array[1..1000] of real;
P: real;
I: integer;
K: real;
begin
Write('N=');
Readln(N);
P:=1;
for I:=1 to N do
begin
Write('Vvedite ',I,'-е chislo A[',I,']=');
Readln(A);
P:=P+A;
end;
K:=Sqrt(Abs(P));
Writeln('K=',K);
ReadLn;
end.


Если искомое число - корень квадратный из |1+a[1]+...+a[n]|, то верно

Re: .

Добавлено: 26 окт 2007, 17:16
Denton
BBB писал(а):Вот на таком псевдокоде:серия

Код: Выделить всё

MaxSeriesLen := 0;
....
....
....

Получили: MaxSeriesLen - длина содержащейся в тексте максимальной серии символов, отличных от букв.
Спасибо!!! :)

Re: Помогите в решении простейших задач

Добавлено: 29 окт 2007, 18:53
Quarter
Спасибо большое!!!
Теперь буду знать:
этот кусок -
write('s=');
readln(s);
абсолютно лишний, потому что потом s все равно обнуляется

Re: Помогите в решении простейших задач

Добавлено: 06 ноя 2007, 21:43
ninjais
Сейчас посмотрела своё первое сообщение, и мне даже стало смешно какие простейшие задачи я не могла решить в самом начале.
Сейчас уже всё более менее, но мне опять требуется помощь.
Наверное, для вас это будет очень просто, да я и сама в дальнейшем уверена, что всё это пойму. Так вот, помогите, пожалуйста:

1). Даны объёмы и массы двух тел из разных материалов. Материал какого из тел имеет большую упругость?...
(Я знаю как решать эту задачу, просто не знаю формулы на нахождение упругости тела, так что подскажите, пожалуйста, формулу).

2). Известны площади круга и квадрата. Определить, уместится ли квадрат в круге?
(Ещё была "зеркальная" задача - там нужно было определить уместится ли круг в квадрате. Я её решила, а эту что-то не могу). Решить с помощью условного оператора.
Вот начало:

const
pi=3.14;
var
S1,S2,r1,r2:integer;
begin
writeln('Введите площадь квадрата');
read(S1);
writeln('Введите площадь круга');
read(S2);
r1:=sqrt(S1/pi);
r2:=sqrt(S2);

а как дальше не знаю..

3). Дано целое число от 1 до 100. Дописать к этому числу слова "год", "года", "лет", определяющие возраст человека. Решить с помощью условного оператора. (Условие я и сама могу написать ко всем задачам, а вот как определить я не очень понимаю). Так что мне не обязательно всё решение, мне нужна лишь подсказка.)

4). Клетки на шахматной доске заданы двумя координатами. По координатам двух клеток определить являются ли они клетками одного цвета (шахматная доска стандартная - 8*8)

5). Дано вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить а в 5 степени и а в 19 степени за 5 операций. (Я уже замучилась с этой задачей, никак не могу решить. А учитель говорит, что она решается и в условии ничего не перепутано.. так что прочитайте его внимательно.)

6). Даны целые числа h (0<=h<=12), m (0<=m<=59), указывающие моменты времени, h - часов, m - минут. Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки совпадут.

Последнюю задачу нужно решить двумя способами: через условный оператор и без его использование.
Через if я решила следующим образом (проверьте, пожалуйста):

var
h,m,n,z:integer;
begin
writeln('Введите h');
read(h);
writeln('Введите m');
read(m);
n:=h*6-h;
if m<n then
z:=n-m
else z:=(m div h)+40;
writeln(z);
readln;
end.

Одногруппники говорят, что не понимают моего решения.) Но! Оно всё просчитывает, как мне кажется.


Заранее спасибо.

Добавлено: 07 ноя 2007, 10:28
BBB
2). Видимо, под "уместится ли квадрат в круге" понимается, "вписывается" ли квадрат в круг?
Во вписанном в круг квадрате (т.е. квадрате, все вершины которого лежат на окружности) диагональ квадрата равна диаметру круга.

Считаем.
Диаметр круга:
D:=2 * sqrt(Sкр./pi);

Диагональ квадрата:
Diag := sqrt (2 * Sкв.)
(это получаем либо из.. помнится, есть такая формула, что площадь квадрата равна половина произведения диагоналей. Либо из теоремы Пифагора: стороны квадрата и диагональ образуют прямоугольный треугольник, т.е. квадрат диагонали равен сумме квадратов сторон, а квадрат стороны - это площать квадрата).

Т.е.
if (Diag < D) then
квадрат в круге уместится
else
квадрат в круге НЕ уместится

3). Видимо, что-то вроде этого:

Код: Выделить всё

if (10 <= L <= 20) then
  write (L, 'лет')
else begin
  L_mod := L mod 10;
  if (L_mod = 1) then
    write (L, 'год')
  else 
    if (L_mod  in [2, 3, 4]) then
      write (L, 'года')
   else
     write (L, 'лет')
end;

4). Интуитивно чувствуется, что тут надо попарно брать разность координат этих двух полей (т.е. разность X-ов и раность Y-ков) и смотреть, чтобы эти две разности были "одинаоковой четности". Т.е. клетки будут однозветными, если или обе разности четные, или обе разности нечетные.

Re: Помогите в решении простейших задач

Добавлено: 07 ноя 2007, 13:08
somewhere
&quot писал(а):1). Даны объёмы и массы двух тел из разных материалов. Материал какого из тел имеет большую упругость?...
При известной массе и объеме можно только плотность подсчитать. Может упругость от плотности зависит.
&quot писал(а):3). Дано целое число от 1 до 100. Дописать к этому числу слова "год", "года", "лет",
Переберите мысленно вслух каждое число, ну или хотя бы несколько:
1: год
2, 3, 4: года
5-20 : лет
ХХ1: год
ХХ2,ХХ3,ХХ4: года
ХХN : лет
&quot писал(а):5). Дано вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить а в 5 степени и а в 19 степени за 5 операций. (Я уже замучилась с этой задачей, никак не могу решить. А учитель говорит, что она решается и в условии ничего не перепутано.. так что прочитайте его внимательно.)
1) a^5
r := a*a*a*a*a;
2) a^19
b := a*a; (a^2)
c := b*b; (a^4)
d := c*c; (a^8)
r := d*d*b*a - получается 6 операций или
b := a*a*a; (a^3)
c := b*b; (a^6)
d := c*c; (a^12)
r := d*c*a - все-равно 6, да и как ни крути, за пять не получится.

Re: Помогите в решении простейших задач

Добавлено: 11 ноя 2007, 11:43
Quarter
Помогите пожалуйста решить задачи.
1)Определить с точностью до 0.2 точку пересечения функции
Y=x-EXP(-(a*x)^2/2) с осью Х при изменении аргумента Х от B0 до
Bm с шагом 0.2 . Сначала следует определить знак функции Y при
X=B0. Изменение знака функции является признаком пересечения оси
Х.

2)Вывести на печать положительные элементы массива X[1],X[2],...,
X[60].

3)Даны действительные числа a[1],...,a[10]. Вычислить
a[1]+a[2]^2+...+a[10]^10.

Заранее Огромное спасибо!!!

Re: Помогите в решении простейших задач

Добавлено: 12 ноя 2007, 12:23
Хыиуду
Насчет клеток на шахматной доске: если сумма координат четная - клетка черная. Все :)
Насчет решения с часами - оно неверно. Например, для 6.40 оно дает в качестве результата 46 минут, т.е. 7.26, а в этот момент стрелки не совпадают. Проблема в том, что решение построено на тезисе, что часовая стрелка перемещается дискретно, т.е. не может находиться между двумя цифрами. Кстати, ответ будет всегда приблизительным с точностью до минуты - хотя бы потому что четкое совпадение стрелок в начале минуты наступает только в 12 часов. Я бы сделал так:

Код: Выделить всё

function minutes(hour:byte):byte; //сколько показывает минутная стрелка, совпадающая с часовой.
begin
  minutes:=hour*5+round(hour*5/12);
end;
  if m<minutes(h) then result:=minutes(h)-m
  else result:=60-m+minutes(h+1);

Re: Помогите в решении простейших задач

Добавлено: 12 ноя 2007, 12:36
Хыиуду
Quarter писал(а):Помогите пожалуйста решить задачи.
1)Определить с точностью до 0.2 точку пересечения функции
Y=x-EXP(-(a*x)^2/2) с осью Х при изменении аргумента Х от B0 до
Bm с шагом 0.2 . Сначала следует определить знак функции Y при
X=B0. Изменение знака функции является признаком пересечения оси
Х.

2)Вывести на печать положительные элементы массива X[1],X[2],...,
X[60].

3)Даны действительные числа a[1],...,a[10]. Вычислить
a[1]+a[2]^2+...+a[10]^10.

Заранее Огромное спасибо!!!
1. x:=b0;
while y(x)*y(x+0.2)>0 do x:=x+0.2;

2. for i:=1 to 60 do if x>0 then writeln(x);

3. sum:=0;
for i:=1 to 10 do sum:=sum+round(exp(i*ln(a)));

Хотя №2 я бы постеснялся спрашивать, даже если бы совсем не знал язык.