Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Найти количество цифр в числе в паскале и еще 3 задачи. (http://www.tehnari.ru/f43/t21744/)

samoel 15.02.2009 00:42

Найти количество цифр в числе в паскале и еще 3 задачи.
 
Помогите решить задачи пожалуйста..

Пусть дано натурально число n (запись числа n в десятичной системе есть akak-1ak-2K…a0). Составьте программу для ответа на вопрос: Сколько цифр в числе n? (Например N=123 Ответ К=3)

Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца.

Пусть даны целое число N, символы s1, s2, …, sn. Преобразуйте последовательность s1, s2, …, sn, удалив каждый символ звездочки (*) и повторив каждый символ, отличный от звездочки.

Как добавить данные в начало файла (написать программу)

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

ummasha 15.02.2009 07:23

Вот ответ на первый вопрос:
Var n,m,p,k:integer;
Begin
write('n=');read(n);
m:=n;k:=0;
while m<>0 do begin
p:=m mod 10;
K:=K+1;
m:=m div 10;
end;
writeln('k=',k);
end.

Pirxus 15.02.2009 09:03

еще вариант считывать число в текстовую переменную и тупо посчитать количество символов) гораздо оперативнее на больших числах будет... хотя с современными процами это не прочухать)

Vladimir_S 15.02.2009 11:41

Цитата:

Сообщение от samoel (Сообщение 176164)
Помогите решить задачи пожалуйста..

Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца.

Const
Year:ARRAY[1..12] of STRING=('January', 'February', 'March', 'April', 'May',
'June', 'July', 'August', 'September', 'October', 'November', 'December');
VAR
i:BYTE;
BEGIN
Write('Number = '); ReadLn(i);
Writeln(Year[i]);
ReadLn;
END.

Цитата:

Пусть даны целое число N, символы s1, s2, …, sn. Преобразуйте последовательность s1, s2, …, sn, удалив каждый символ звездочки (*) и повторив каждый символ, отличный от звездочки.
Const N= ; {enter the number}
VAR
St1:ARRAY [1..N] of CHAR;
St2:ARRAY [1..N*2] of CHAR;
i,j,M:WORD;
BEGIN
FOR i:=1 TO N DO READ(St1[i]);
j:=1;
M:=0;
FOR i:=1 TO N DO
IF St1[i]<>'*' THEN
BEGIN
St2[j]:=St1[i];
St2[j+1]:=St1[i];
j:=j+2;
M:=M+2;
END;
FOR j:=1 TO M DO
WRITE(St2[j],' ');
ReadLn;
END.

Цитата:

Как добавить данные в начало файла (написать программу)
VAR
f,f1:TEXT;
S:STRING;
BEGIN
Assign(f1, '{enter the way to NEW file and its name, e.g. 'C:\file2'}');
ReWrite(f1);
WriteLn(f1, 'Long ago there were three pigs');
Assign(f, '{enter the way to OLD file and its name, e.g. 'C:\file1'}');
ReSet(f);
REPEAT
ReadLn(f,S);
WriteLn(f1,S);
UNTIL EoF(f);
Close(f);
Close(f1);
END.

samoel 15.02.2009 15:33

Спасибо большое! спасли меня.

ummasha 15.02.2009 18:51

Vladimir_S, по-моему, в задаче

Цитата:

Сообщение от samoel (Сообщение 176164)
Пусть даны целое число N, символы s1, s2, …, sn. Преобразуйте последовательность s1, s2, …, sn, удалив каждый символ звездочки (*) и повторив каждый символ, отличный от звездочки.

тип переменных i и j - integer.

Vladimir_S 15.02.2009 20:19

Цитата:

Сообщение от ummasha (Сообщение 176291)
Vladimir_S, по-моему, в задаче
Цитата:

Пусть даны целое число N, символы s1, s2, …, sn. Преобразуйте последовательность s1, s2, …, sn, удалив каждый символ звездочки (*) и повторив каждый символ, отличный от звездочки.
тип переменных i и j - integer.

Ну да, Integer. А у меня как? Word? Так это просто разновидность. Вообще в Турбопаскале есть несколько целых типов:

1. ShortInt. 8-битное знаковое. Диапазон -128..+127
2. Integer. 16-битное знаковое. Диапазон -32768..+32767
3. LongInt. 32-битное знаковое. Диапазон -2147483648..+2147483647
4. Byte. 8-битное беззнаковое. Диапазон 0..+255
5. Word. 16-битное беззнаковое. Диапазон 0..+65535

Поскольку в данной задаче i и j не могут принимать отрицательных значений, я и употребил тип Word. А можно было и Integer.

ummasha 15.02.2009 20:22

Vladimir_S, мой Паскаль потребовал заменить тип переменных i и j на integer, по другому выходила ошибка(

Vladimir_S 15.02.2009 20:38

Цитата:

Сообщение от ummasha (Сообщение 176330)
Vladimir_S, мой Паскаль потребовал заменить тип переменных i и j на integer, по другому выходила ошибка(

Интересно. А что, он вообще кроме Integer целых типов не понимает? ЧуднО! Или там такое ограничение на переменные цикла? Сейчас проверил - у меня не ругается.

Меня вообще-то другое беспокоит. В задаче про ввод данных в начало файла я заложил вставку фразы про трех поросят. Интересно, Samoel понимает, что это просто для примера? А то ведь конфуз выйдет, и я окажусь виноват :o .

ummasha 15.02.2009 20:43

Vladimir_S, мой Паскаль пишет следующее:
ОШИБКА: переменная цикла For должна иметь тип Integer, Char, Byte, интервальный или перечисляемый(((


Часовой пояс GMT +4, время: 06:08.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.