IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Умножение через циклы, Попарное произведение
Домовой
сообщение 17.12.2005 16:06
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


wink.gif
Я уже, наверное, немножко "поднадоел"?
smile.gif
Опять я встал при разработке программульки.
Вот задание:

Найти все трехзначные числа, которые в 7 раз больше суммы попарных произведений своих цифр (например, 182=7*(1*8+8*2+1*2))

Вроде все понятно и ясно.
Сейчас читал самоучитель и вроде вы понял, чтобы отображать например из числа 100 первую цифру,
надо использовать к переменной параметр [1], т.е. a=100, а отображение первой цифры a[1].

Но почему-то это не работает к присваиванию переменной sad.gif

Вот код:

Код

var a, m: real;
      i: integer;

begin

   FOR i := 101 TO  999 DO
      begin
         a:=7*(i[1]*i[2]+i[2]*i[3]+i[1]*i[3]);
         writeln(a);
      end;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
-Volvo-
сообщение 17.12.2005 16:15
Сообщение #2


Гость






Цитата
Сейчас читал самоучитель и вроде вы понял, чтобы отображать например из числа 100 первую цифру, надо использовать к переменной параметр [1], т.е. a=100, а отображение первой цифры a[1].
Именно ток... Только это - при работе со строками... у тебя же I - типа Integer, с ним это не пройдет...

Воспользуйся другим методом определения цифр в трехзначном числе X:
первая цифра: digit_1 = X div 100;
третья цифра: digit_3 = X mod 10;
вторая цифра, соответственно: digit_2 = (X - 100*digit_1 - digit_3) div 10;
 К началу страницы 
+ Ответить 
Домовой
сообщение 17.12.2005 16:50
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


гм...
ага... с этим ясно...
вроде составил, но программа почему-то считает значения и двузначные и трехзначные...
Код

program zikl_8;

var c: real;
    a, i, d1, d2, d3: integer;

begin
   i:=101;
   repeat
      begin
         d1:=i div 100;
         d3:= i mod 10;
         d2:=(i-100*d1-d3) div 10;
         a:=7*(d1*d2+d2*d3+d1*d3);
         c:=a;
            if (c>100) or (c<1000) then
            begin
               writeln(a)
            end;
         i:=i+1;
         readln;
      end;
   until a>=999;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Volvo-
сообщение 17.12.2005 17:15
Сообщение #4


Гость






По-моему, тебе вполне достаточно этого:
program zikl_8;

var c: real;
a, i, d1, d2, d3: integer;

begin
i:=101;
repeat

d1:=i div 100;
d3:= i mod 10;
d2:=(i-100*d1-d3) div 10;
a:=7*(d1*d2+d2*d3+d1*d3);

{ сравниваешь число с семикратным попарным произведением }
if i = a then begin
writeln(a);
readln;
end;
i:=i+1;

until i>=999; { цикл все-таки идет по I }

end.

Кстати, конструкция Repeat ... Until сама по себе является операторными скобками, то есть внутри нее Begin ... End просто лишние...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 14:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"