Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!
Задача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) напечатать фразу «мне К лет» учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года»
Дана последовательность содержащая от 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) напечатать фразу «мне К лет» учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года»
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.
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.
- Turboworld
- Сообщения: 29
- Зарегистрирован: 27 дек 2007, 23:31
- Контактная информация:
Тихий ужос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.



К тому же выведет количество лет в виде 1.0000000E+00 - типа такого

В общем низачот

Решаю задачки на Паскале. Практически любой сложности. Да, дорого. Но договориться всегда можно. Аська 337351594 

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
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
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Turboworld
- Сообщения: 29
- Зарегистрирован: 27 дек 2007, 23:31
- Контактная информация:
угу, просто этот "шедевр" до конца не прогляделХыиуду писал(а):Turboworld, нет, почему же? "Мне 2.2000000Е+01 лет".

Решаю задачки на Паскале. Практически любой сложности. Да, дорого. Но договориться всегда можно. Аська 337351594 

Ну не совсем все. В интервале от 11 до 20 везде будет "лет", вне зависимости от (k mod 10).Хыиуду писал(а):Turboworld, нет, почему же? "Мне 2.2000000Е+01 лет".
5. В программе Темки во всех условиях k надо заменить на (k mod 10), а ее тип сделать byte
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
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.
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
решение:" писал(а):Написать пргу, которая для целого числа К(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.
Все-таки, "исключительный период" - от 11 до 14, а не до 13 (а то получим в результате текст: 'Возраст составляет 14 года'). Ну, или, чтобы не париться, можно вообще считать от 11 до 20.Serge_Bliznykov писал(а):решение:Код: Выделить всё
................. {обработка исключения 11 12 13} if ((k mod 100)>=11) and ((k mod 100)<=13) then sEnding := ' лет' else .................
Т.е. вышеприведенное условие следует заменить на:
Код: Выделить всё
.................
{обработка исключения 11 - 14, или, чтобы не париться: 11-20 }
if ((k mod 100)>=11) and ((k mod 100)<=20) then
sEnding := ' лет'
else
.................