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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 23:52   #51
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так работает для 2/5 ))))
Но 2/3 воспринимает как 0.6666666666667.. Хм..
Код:
var
	tmp,tmp1,tmp2:string;
	sym:char;
	num,tnum: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
   sym := tmp[pos('.',tmp)-1]
  else sym := tmp2[length(tmp2)];
	
	case sym 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);
	end;
	val(tmp2,num);
	num := sqr(num);
	//writeln('Square of number is ',num:0:17);
	readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Цитата:
Сообщение от Jora_Kornev Посмотреть сообщение
может я не все понял?
ну в задании сказано взять последнюю цифру исходного числа и не возводя в квадрат определить... я так понимаю)
Цитата:
Вот так работает для 2/5 ))))
Но 2/3 воспринимает как 0.6666666666667.. Хм..
калькулятор в виндоуз тоже так делает)
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 16.05.2009, 23:56   #53
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от __STDC__
калькулятор в виндоуз тоже так делает)
И что ж теперь делать? ) Придумывать новый калькулятор? )

Надо как-то сделать обработку цифр в периоде.

А что делать с иррациональными числами?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Цитата:
ну в задании сказано взять последнюю цифру исходного числа и не возводя в квадрат определить... я так понимаю)
А как можно определить последнюю цифру числа незная его? ))
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума Ответить с цитированием
Старый 16.05.2009, 23:59   #55
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Поясняю код =)
Код:
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.
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 16.05.2009, 23:59   #56
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Jora_Kornev Посмотреть сообщение
А как можно определить последнюю цифру числа незная его? ))
смотрите код выше
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 17.05.2009, 00:00   #57
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
И что ж теперь делать? ) Придумывать новый калькулятор? )

Надо как-то сделать обработку цифр в периоде.

А что делать с иррациональными числами?
надеюсь мы ограничимся действительными числами?) на комплексные переходить не будем?))) для периода например округляется последняя цифра.. так что можно проверять все цифры до нее и, если они равны между собой, брать предпоследнюю.. хотя это не спасет от других периодов.. ну таких.. когда цифры не равны.. ну вы поняли (с предпериодом, вот..))) думаю к этому уже не стоит придираться)))
Uguu~

Последний раз редактировалось __STDC__; 17.05.2009 в 00:04.
__STDC__ вне форума Ответить с цитированием
Старый 17.05.2009, 00:02   #58
Jora_Kornev
Пользователь
 
Аватар для Jora_Kornev
 
Регистрация: 06.01.2009
Сообщений: 72
По умолчанию

тогда в моем коде не хватает только вашей части:
Код:
	
	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);
ася: тристадевяносто 068 ноль восемь шесть
Jora_Kornev вне форума Ответить с цитированием
Старый 17.05.2009, 00:04   #59
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от __STDC__
надеюсь мы ограничимся действительными числами?)
Ну да, наверное, это будет разумно ))

Вот:
Код:
var
tmp,tmp1,tmp2:string;
sym  :char;
num,tnum:real;
i:byte;
len : integer;
flag : boolean;

begin
	num := 2/3;
	
	str(num,tmp);
    writeln('tmp = ',tmp);

    tmp2 := copy(tmp,pos('.',tmp)+1,pos('E',tmp)-pos('.',tmp)-1);

    writeln('tmp2 = ',tmp2);

    flag := true;
    len := length(tmp2);
	for i:=length(tmp2) downto 1 do
	 if (tmp2[i] = '0') then delete(tmp2,i,1)
     else if (i<len-1) and (tmp2[i]<>tmp2[i+1]) then flag := false;


  if length(tmp2)=0 then
   sym := tmp[pos('.',tmp)-1]
  else if not flag then sym := tmp2[length(tmp2)]
  else sym := tmp2[length(tmp2)-1];


  writeln('Last digit: ',sym);
	
	case sym 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);
	end;
	val(tmp2,num);
	num := sqr(num);
	//writeln('Square of number is ',num:0:17);
	readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

кстати.. вот любопытная штука... http://ru.wikipedia.org/wiki/0,(9) =)
Uguu~
__STDC__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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