Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 00:06   #61
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

исправляю весь код:
Код:
Program noob2;
uses crt;
var 
 s, s1 : string;
 a : real;
BEGIN
 a:=2/5;
 str(a:0:0, s);
 s1:=s[length(s)];
	case s1 of
		'0': writeln('Last digit is: ',0);
		'1': writeln('Last digit is: ',1);
		'2': writeln('Last digit is: ',4);
		'3': writeln('Last digit is: ',9);
		'4': writeln('Last digit is: ',6);
		'5': writeln('Last digit is: ',5);
		'6': writeln('Last digit is: ',6);
		'7': writeln('Last digit is: ',9);
		'8': writeln('Last digit is: ',4);
		'9': writeln('Last digit is: ',1);
 readkey;
END.
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума Ответить с цитированием
Старый 17.05.2009, 00:07   #62
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от __STDC__
кстати.. вот любопытная штука... http://ru.wikipedia.org/wiki/0,(9) =)
Помню в 10-м или 11-м классе (в школе) я спорил с математичкой по этому поводу и пытался доказать, что 1/бесконечной нельзя пренебрегать ))
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 00:09   #63
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
исправляю весь код:
только s1 должен быть типа char, не хватает end после case, и еще прога всегда будет показывать 0 =)
Цитата:
Помню в 10-м или 11-м классе (в школе) я спорил с математичкой по этому поводу и пытался доказать, что 1/бесконечной нельзя пренебрегать ))
и кто выиграл спор?)
Uguu~

Последний раз редактировалось __STDC__; 17.05.2009 в 00:12.
__STDC__ вне форума Ответить с цитированием
Старый 17.05.2009, 00:11   #64
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от __STDC__
и кто выиграл спор?)
Каждый остался при своем ))
С ее стороны никаких убедительных аргументов не услышал. Только ироничный вопрос "Ну что такое одна бесконечная?" )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 00:13   #65
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Каждый остался при своем ))
С ее стороны никаких убедительных аргументов не услышал. Только ироничный вопрос "Ну что такое одна бесконечная?" )
=) математики они такие... но в контексте нашей программы настолько малые величины не имеют значения) все равно размера типа не хватит))) у нас тут все дискретно)
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 17.05.2009, 00:15   #66
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Добавил обработку 0.(9)
Код:
num := 0.999999999999999999999;
.......
все то же самое...
...........
if length(tmp2)=0 then
   sym := tmp[pos('.',tmp)-1]
  else if not flag then sym := tmp2[length(tmp2)]
  else
   begin
   sym := tmp2[length(tmp2)-1];
   if sym = '9' then sym := '1';
   end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 01:08   #67
Карабин
Пользователь
 
Аватар для Карабин
 
Регистрация: 01.04.2009
Сообщений: 27
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
Поясняю код =)
Код:
var
	tmp,tmp2:string; //переменные строкового типа, исходная строка и дробная часть
	sym:char; //последний символ строка
	num:real; //число
	i:byte; //счетчик
begin
	num := 2/5; //исходное число
	
	str(num,tmp); //преобразуем в строку
    tmp2 := copy(tmp,pos('.',tmp)+1,pos('E',tmp)-pos('.',tmp)-1); //и выделяем дробную часть

	for i:=length(tmp2) downto 1 do
		if (tmp2[i] = '0') then delete(tmp2,i,1); //для каждого символа проверяем равенство нулю, и если это так - удаляем его

  if length(tmp2)=0 then //если после этого строка пуста (длина = 0)
   sym := tmp[pos('.',tmp)-1] //переменной sym присваеваем значение первого символа перед десятичной .
  else sym := tmp2[length(tmp2)]; //иначе - последний символ из строки tmp2
	
	case sym of //в зависимости от значения sym определяем последнюю цифру квадрата
		'0': writeln('Last digit is: ',0);
		'1': writeln('Last digit is: ',1);
		'2': writeln('Last digit is: ',4);
		'3': writeln('Last digit is: ',9);
		'4': writeln('Last digit is: ',6);
		'5': writeln('Last digit is: ',5);
		'6': writeln('Last digit is: ',6);
		'7': writeln('Last digit is: ',9);
		'8': writeln('Last digit is: ',4);
		'9': writeln('Last digit is: ',1);
	end;
	val(tmp2,num); //преобразуем строку в число
	num := sqr(num); //находим квадрат
	writeln('Square of number is ',num:0:17); //выводим его для проверки
	readln;
end.
Написал для проверки код в Паскале - работает без ошибок, но даёт результат "0,00000000000000000". Так и должно быть?

Я попробовал заменить "num:=2/5;" на "writeln ('Введите число'); readln (num);", чтобы исходное число определял пользователь. Для проверки ввёл число 11.09, а получил результат 361.000000000000000. Так не должно быть. Где то я не досмотрел. Подскажите пожалуйста.

Что означают: 'Last digit is: ' , length , pos , copy , 'E' (вообще не понял откуда и для чего взялось)?
Сократ: "Я знаю, что ничего не знаю".

Последний раз редактировалось Карабин; 17.05.2009 в 01:14.
Карабин вне форума Ответить с цитированием
Старый 17.05.2009, 01:13   #68
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

скопируйте код вот отсюда
http://programmersforum.ru/showpost....9&postcount=59 =)
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 17.05.2009, 01:13   #69
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Карабин
Написал для проверки код в Паскале - работает без ошибок, но даёт результат "0,00000000000000000". Так и должно быть?
Да. Просто я делал изменения в листинге __STDC__. Нули - это возведенный в квадрат ноль. В общем, удалите строчку:
Код:
writeln('Square of number is ',num:0:17); //выводим его для проверки
ps Думаю, для преподавателя это решение будет неожиданным )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 01:16   #70
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

вот тебе рабочий и проверенный код :
Код:
Program noob2;
uses crt;
var 
 s: string;         {строковая переменная}
 res : char;       {символьная переменная}
BEGIN
 write('vvedite chislo ');
 readln(s);      {получаем число в виде строки}
 res:=s[length(s)];     {берем последний символ строки, который являеся последней цифрой числа}
 case res of           {в зависимости от значения переменной res выводим тот или иной текст 'Last digit is: х'}
		'0': writeln('Last digit is: 0');
		'1': writeln('Last digit is: 1');
		'2': writeln('Last digit is: 4');
		'3': writeln('Last digit is: 9');
		'4': writeln('Last digit is: 6');
		'5': writeln('Last digit is: 5');
		'6': writeln('Last digit is: 6');
		'7': writeln('Last digit is: 9');
		'8': writeln('Last digit is: 4');
		'9': writeln('Last digit is: 1');
                      else writeln('vvedite chislo pravilno');
		end;
 readkey;    {ждем нажатия клавиши}
END. {конец}
ася: тристадевяносто 068 ноль восемь шесть

Последний раз редактировалось Jora_Kornev; 17.05.2009 в 01:29.
Jora_Kornev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти сумму цифр, состовляющих числа. babaika Общие вопросы C/C++ 4 29.12.2008 08:58
Найти первую цифру в данных ячейки.. kra183 Microsoft Office Excel 11 09.05.2008 01:35
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
двузначные числа которые при умножении на 3 будут заканчиваться на цифру 4 Ases_51 Паскаль, Turbo Pascal, PascalABC.NET 4 13.01.2008 11:37
как найти корень из числа $Дмитрий Общие вопросы Delphi 7 26.04.2007 13:40