Страница 1 из 2
Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 00:16
Black89
Задача1
Дана последовательность содержащая от 2 до 30 слов, в каждом из которых от 1 до 10 символов; между соседними словами- произвольное число пробелов, за последним словом точка. Напечатать эту же последовательность, удалив из всех слов цифры и символы подчёркивания
Задача2
Получить целочисленную матрицу порядка 7, элементами которой являются числа 1,2,...,49, расположенные в ней по спирали
Задача3
Для заданных Х0, dx и М вычислить множество значений {f1, f2,...,fM} функции 1/Х(в квадрате) в точках x0, xo + dx, x0 + 2dx,..., xM в области 0,5< X ə
Задача4
Составить программу, которая печатает true, если среди первых 3х цифр из дробной части заданного положительного вещественного числа есть цифра 5 и false в противном случае
Задача5
Написать пргу, которая для целого числа К(1≤К≤99) напечатать фразу «мне К лет» учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года»
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 09:21
Temka
5. program temka;
var k:Real;
begin
Writeln('Введите возраст');
Readln(k);
if (k=1) then
Writeln('Мне ',k,' год')else
If (k=2) or (k=3) or (k=4) then
Writeln('Мне ',k,' года')else
Writeln('Мне ',k,' лет')
end.
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 10:20
Turboworld
Temka писал(а):5. program temka;
var k:Real;
begin
Writeln('Введите возраст');
Readln(k);
if (k=1) then
Writeln('Мне ',k,' год')else
If (k=2) or (k=3) or (k=4) then
Writeln('Мне ',k,' года')else
Writeln('Мне ',k,' лет')
end.
Тихий ужос

а если введу 22, то что тогда выведет? Ответ - ничего

хотя К от 1 до 99
К тому же выведет количество лет в виде 1.0000000E+00 - типа такого
В общем низачот

Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 11:16
Хыиуду
Turboworld, нет, почему же? "Мне 2.2000000Е+01 лет".
1. while pos('0',s)<>0 do delete(s,pos('0',s),1) - повторить для всех остальных цифр и для символа _
4. writeln(pos('5', inttostr(trunc(x*1000) mod 1000))>0). Если на Паскале - описать функцию inttostr (перевод числа в строку) через процедуру str
5. В программе Темки во всех условиях k надо заменить на (k mod 10), а ее тип сделать byte
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 12:32
Turboworld
Хыиуду писал(а):Turboworld, нет, почему же? "Мне 2.2000000Е+01 лет".
угу, просто этот "шедевр" до конца не проглядел

Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 12:54
Black89
СПАСИБО!!!!!!!!!!
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 09 янв 2008, 14:27
BBB
Хыиуду писал(а):Turboworld, нет, почему же? "Мне 2.2000000Е+01 лет".
5. В программе Темки во всех условиях k надо заменить на (k mod 10), а ее тип сделать byte
Ну не совсем все. В интервале от 11 до 20 везде будет "лет", вне зависимости от (k mod 10).
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 10 янв 2008, 00:10
Serge_Bliznykov
Black89,
" писал(а):Получить целочисленную матрицу порядка 7, элементами которой являются числа 1,2,...,49, расположенные в ней по спирали
решение:
Код: Выделить всё
const
MaxArray = 7;
type
MyArrayType = array [1..MaxArray, 1..MaxArray] of integer;
procedure Spiral(var M : MyArrayType);
var
k, MaxStep, PosX, PosY : integer;
i: integer;
BEGIN
i := 1;
PosX := 1;
PosY := 0;
MaxStep := MaxArray;
while i <= MaxArray*MaxArray do
begin
{движение вправо}
for k:=1 to MaxStep do
begin
Inc(PosY);
M[PosX, PosY] := i;
Inc(i);
end;
Dec(MaxStep);
{движение вниз по спирали}
for k:=1 to MaxStep do
begin
Inc(PosX);
M[PosX, PosY] := i;
Inc(i);
end;
{движение влево по спирали}
for k:=1 to MaxStep do
begin
Dec(PosY);
M[PosX, PosY] := i;
Inc(i);
end;
Dec(MaxStep);
{движение вверх по спирали}
for k:=1 to MaxStep do
begin
Dec(PosX);
M[PosX, PosY] := i;
Inc(i);
end;
end;
end;
var
Matrix : MyArrayType;
i, j : integer;
BEGIN
Spiral(Matrix);
for i:=1 to MaxArray do
begin
for j:=1 to MaxArray do
Write(Matrix[i,j]:4);
WriteLn;
end;
END.
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 10 янв 2008, 00:21
Serge_Bliznykov
" писал(а):Написать пргу, которая для целого числа К(1≤К≤99) напечатать фразу «мне К лет» учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года»
решение:
Код: Выделить всё
{если число
заканчивается на 1 - год
- на 2..4 - года
остальное всё - лет
исключения - 11 12 13 - лет}
var
k : integer;
sEnding : string;
begin
repeat
Writeln;
Write('Введите возраст (0 - выход из программы): ');
Readln(k);
{обработка исключении 11 12 13}
if ((k mod 100)>=11) and ((k mod 100)<=13) then
sEnding := ' лет'
else
case (k mod 10) of
1: sEnding := ' год';
2..4: sEnding := ' года';
else
sEnding := ' лет';
end;
WriteLn('Возраст составляет ',k:1,sEnding);
until k=0;
end.
Re: Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Добавлено: 10 янв 2008, 09:42
BBB
Serge_Bliznykov писал(а):решение:
Код: Выделить всё
.................
{обработка исключения 11 12 13}
if ((k mod 100)>=11) and ((k mod 100)<=13) then
sEnding := ' лет'
else
.................
Все-таки, "исключительный период" - от 11 до
14, а не до 13 (а то получим в результате текст: 'Возраст составляет 14 года'). Ну, или, чтобы не париться, можно вообще считать от 11 до 20.
Т.е. вышеприведенное условие следует заменить на:
Код: Выделить всё
.................
{обработка исключения 11 - 14, или, чтобы не париться: 11-20 }
if ((k mod 100)>=11) and ((k mod 100)<=20) then
sEnding := ' лет'
else
.................