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

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

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

 
 Ответить  Открыть новую тему 
> Умножение через циклы, Попарное произведение
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 12.01.2025 16:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name