Консультация № 141072
30.07.2008, 16:06
0.00 руб.
0 9 2
Большая просьба помочь в решении задач:1.составить программу для вычисления:
у=а+в-с2 при в>о
а-в-√c при в≤0
2.Составить программу для вычисления суммы кубов чисел от 10 до 100.
3. Если длина строки нечетное число,то удалить среднюю букву.
4. Найти сумму нечетных делителей натурального числа.

Обсуждение

Неизвестный
30.07.2008, 16:21
общий
3. Если длина строки нечетное число,то удалить среднюю букву.
Код:
 var s:string;
begin
readln(s);
delete(s,length(s) div 2+1,length(s) mod 2);
writeln(s);
end.


Good Luck!
давно
Старший Модератор
31795
6196
30.07.2008, 17:49
общий
Панин Андрей Владимирович :

Условие первой задачи опишите правильно , а то в вопросе а-в-√c при в≤0
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Профессор
401888
1232
30.07.2008, 19:33
общий
По моему там
у=а+в-с2 при в>0
у=а-в-√c при в≤0
Другое неясно. Либо ограничивать при вводе с>=0, либо при выводе сообщать, if c<0 then writeln ('у не определено!');

delete(s,length(s) div 2+1,length(s) mod 2);

Вроде проще delete(s,length(s) div 2+1,1);
давно
Старший Модератор
31795
6196
30.07.2008, 19:45
общий
Пупорев Юрий Борисович :
Цитата: 187336
Вроде проще delete(s,length(s) div 2+1,1);

нет не проще, т.к. если длина строки четна то символ будет удаятся в любом случае, а так
delete(s,length(s) div 2+1,[u] [b] 0 [/b] [/u]); ничего не удалится.

Я догадываюсь, что там должен быть "корень" и "меньше или равно", пусть автор подтвердит.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
30.07.2008, 19:48
общий
30.07.2008, 22:46
это ответ
Здравствуйте, Панин Андрей Владимирович!
Код:
 
var
ch, sum, i: integer;
{ch - число; sum - сумма делителей; i - переменная-счётчик}
begin
readln(ch);
{считываем число с клавиатуры}
sum:= 0;
{изначально сумма делителей равна нулю}
for i:= 2 1 to ( ch div 2) do
{задаём цикл, в котором будем проматривать все числа от 2 до ch/2}
if (ch mod i = 0) and not Odd(i)
{если мы встречаем число, удовлетворяющее условию задачи (оно является делителем ch, а также оно чётно)}
then sum:= sum + i;
{то к значению переменной sum прибавляем значение переменной i, ибо она будет являться нечётным делителем для ch}
write(sum);
{выводим результат на экран}
readln;
end.


О функциях:
1) div - целочисленное деление (остаток опускается);
2) mod - деление чисел, когда опускается целая часть числа (например 5 mod 4 = [s] 25 [/s] 1 );
3) Odd(x) - функция возвращает TRUE, если число х нечётное, и FALSE в обратном случае (х - целое);
4) not - отрицание.

Best regard's!
давно
Старший Модератор
31795
6196
30.07.2008, 20:19
общий
SHERRY:
Цитата: 114876
например 5 mod 4 = 25


Можно узнать, как Вы такое получили, я тоже хочу такой компилятор

Цитата: википедия
Если для некоторого целого числа А и натурального (иногда целого) числа В существует целое число С, такое, что ВС = А, то говорят, что число А делится (нацело) на В.
В этом случае В называется делителем числа А, а А называется кратным числу В.


Цитата: 114876
for i:=2 to (ch div 2) do

а если число делится само на себя или на 1, это что не учитывается?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
30.07.2008, 20:33
общий
Цитата: Зенченко Константин Николаевич
если число делится на 1

В условии задачи сказано, что делитель должен быть ... эм.. нечётным. гм... ну можно начинать цикл с единички, а в конце делать проверку самого числа на нечётность и, если что, прибавлять его к сумме

Цитата: Зенченко Константин Николаевич
Можно узнать, как Вы такое получили, я тоже хочу такой компилятор


Я сегодня не выспался..
Неизвестный
31.07.2008, 09:53
общий
Всем большое спасибо за помощь.

В первой задаче должен быть "корень"из с при в "меньше или равно" 0
давно
Старший Модератор
31795
6196
31.07.2008, 11:49
общий
это ответ
Здравствуйте, Панин Андрей Владимирович!

В приложении решение задач 1,2,4.
В задачах использовано свойство логического типа как перечисляемого, т.е. False=0 True=1.
1)строка:
a+abs(b) в условии задачи стоит знак минус для отрицательных чисел, что в итоге даёт плюс
-round(exp(ln(c)*(1+ord(b>0))/(1+ord(b<=0)))) формула возведения числа в любую степень, корень это степень равная 1/2
2)round(exp(ln(a)*3)) возведение числа в куб
4)строка:
оrd((a mod b)=0) если А делится нацело, то будет 1, иначе 0
*(b mod 2) если число нечетное будет 1, иначе 0
*b само число

вопросы задавайте в мини-форум.
Удачи!

Приложение:
var
a,b,c:integer;
d:longint;
begin
{1}
{вводим данные}
write('a:');readln(a);
write('b:');readln(b);
{контроль вводимого числа}
repeat
write('c:');readln(c);
until c>0;
writeln('1:Y:=',a+abs(b)-round(exp(ln(c)*(1+ord(b>0))/(1+ord(b<=0)))));
{2}
writeln;
d:=0;
{в цикле перебираем все значения}
for a:=10 to 100 do
{считаем сумму кубов}
d:=d+round(exp(ln(a)*3));
writeln('2:S:=',d:10);
{4}
{вводим натуральное число}
writeln;
repeat
write('N:=');
readln(a);
until a>1;
d:=0;
for b:=1 to a do
{считаем сумму нечетных делителей}
d:=d+ord((a mod b)=0)*(b mod 2)*b;
writeln('4:S:=',d:10);
end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа