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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2007, 18:06   #1
BETONOMESHALKA
Пользователь
 
Аватар для BETONOMESHALKA
 
Регистрация: 25.06.2007
Сообщений: 40
По умолчанию Как решить задачу?

На интервале 1000....1999 найти все простые числа каждое и которых обладает тем свойством что сумма первой и второй его Цифр записи этого числа равна сумме третьей и четвёртой цифре.
Как решить?
Граф дракула наш кумир
Патамушта он ВОМПИР!
BETONOMESHALKA вне форума Ответить с цитированием
Старый 03.11.2007, 20:00   #2
shtuceron
 
Регистрация: 02.11.2007
Сообщений: 7
По умолчанию

Думаю что это подойдет:

procedure TForm1.Button1Click(Sender: TObject);
var s: string[4];
x1, x2, x3, x4: integer;
i: integer;
begin

for i:=1000 to 1998 do
begin
s:=inttostr(i);
x1:=strtoint(copy(s, 1, 1));
x2:=strtoint(copy(s, 2, 1));
x3:=strtoint(copy(s, 3, 1));
x4:=strtoint(copy(s, 4, 1));
if (x1+x2)=(x3+x4) then Memo1.Lines.Add(s);
end;

end;
shtuceron вне форума Ответить с цитированием
Старый 03.11.2007, 20:25   #3
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию Не подходит

Цитата:
Думаю что это подойдет:
procedure TForm1.Button1Click(Sender: TObject);
var s: string[4];
x1, x2, x3, x4: integer;
i: integer;
begin

for i:=1000 to 1998 do
begin
s:=inttostr(i);
x1:=strtoint(copy(s, 1, 1));
x2:=strtoint(copy(s, 2, 1));
x3:=strtoint(copy(s, 3, 1));
x4:=strtoint(copy(s, 4, 1));
if (x1+x2)=(x3+x4) then Memo1.Lines.Add(s);
end;
end;
Простое число — это натуральное число, большее единицы, имеющее два натуральных делителя 1 и само себя.
Например: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29...

Данный код показывает все числа у которых:
сумма первой и второй цифры равна сумме третьей и четвёртой цифре.
Автору нужно все простые числа у кторых:
сумма первой и второй цифры равна сумме третьей и четвёртой цифре.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 03.11.2007, 21:24   #4
Omedus
Пользователь
 
Аватар для Omedus
 
Регистрация: 01.11.2007
Сообщений: 27
По умолчанию

Простые числа можно проверять так: делаем счётчик от 1000 до 1999. В нём делаем ещё один счётчик, но уже от 1 до 1999. Делим нацело переменную первого счётчика на переменную второго и сравниваем остаток от целого деления с нулём. Если делится, то какой-то переменной n присваевается значение n+1 (изначально n=0). Если n=2, то это значит, что нашлись лишь два числа с промежутка от 1 до 1999 на которых число первого счётчика делится нацело. Тогда число первого счётчика записываем в новый массив. В результате у нас будет массив простых чисел с промежутка от 1000 до 1999. Ну а как делать дальше уже говорил shtuceron. Просто делаем не со всеми числами, а с числами из нового массива простых чисел.
Надеюсь, что я всё понятно объяснил. Извиняюсь, что без кода (времени нет)
Генерация случайных чисел — слишком важное дело, чтобы оставлять её на волю случая.
Scientia potentia est
Omedus вне форума Ответить с цитированием
Старый 03.11.2007, 21:26   #5
BETONOMESHALKA
Пользователь
 
Аватар для BETONOMESHALKA
 
Регистрация: 25.06.2007
Сообщений: 40
По умолчанию

Пасиба shtuceron но что значит ((string[4] 4 в скобках это что? ))
(((x1:=strtoint(copy(s, 1, 1)) что такое copy и что там за цифры? )))))
и что такое i ???
Граф дракула наш кумир
Патамушта он ВОМПИР!
BETONOMESHALKA вне форума Ответить с цитированием
Старый 03.11.2007, 21:36   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Странно... незная этого решаете задачи, и просите полного ответа ввиде кода. Я боюсь спрашивать зачем Вам это 4 - это всеголиш ссылка на байт или по русски это 4й символ строки - ну а copy - явно написано Копировать , указан 1й параметр строка а потом индекс и сколько. Это все написано и выводиться при нажатии на copy (например) F1 - клавиши. Ах да а i - переменная и если это так не заметно то переменная i участвует в цикле перебора
BOBAH13 вне форума Ответить с цитированием
Старый 03.11.2007, 21:42   #7
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

copy(st, index, count) - функция типа string; копирует из строки st count символов, начиная с символа index.

i - переменная цикла, счетчик.

BETONOMESHALKA решение shtuceron не коректно, согласно поставленному заданию.

Вот тут много чего полезного для тебя, читай.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 03.11.2007, 23:17   #8
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Сообщение Bсе простые числа на интервале 1000..1999 сумма первой и второй цифeр равна сумме третьей и четвёртой

Немного топорно, но делает то что надо.
Код:
procedure TForm1.Button1Click(Sender: TObject);
const n=1999;
var Numb:array[0..n] of integer;
    i,k,x1,x2,x3,x4:integer;
    s:string;
begin

for i:=0 to n do
Numb[i]:=i;

Numb[1]:=0;
for i:=2 to n do
Begin
if Numb[i]<>0 then
Begin
k:=i*2;
while k<n do
Begin
Numb[k]:=0;
k:=k+i;
End;
End;
end;

//--------------------------------------------->
//Код shtuceron'a
//--------------------------------------------->
for i:=1000 to n do
if (Numb[i]<>0) then
Begin
s:=IntToStr(Numb[i]);
x1:=StrToInt(copy(s, 1, 1));
x2:=StrToInt(copy(s, 2, 1));
x3:=StrToInt(copy(s, 3, 1));
x4:=StrToInt(copy(s, 4, 1));
if (x1+x2)=(x3+x4) then Memo1.Lines.Add(s);
End;
//--------------------------------------------->
end;
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 04.11.2007, 00:19   #9
BETONOMESHALKA
Пользователь
 
Аватар для BETONOMESHALKA
 
Регистрация: 25.06.2007
Сообщений: 40
По умолчанию

Пасиба al delta. Почитаю
Граф дракула наш кумир
Патамушта он ВОМПИР!
BETONOMESHALKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу... Spiker01 Паскаль, Turbo Pascal, PascalABC.NET 27 17.06.2008 18:58
Помогите решить задачу Chuvak Общие вопросы C/C++ 3 07.06.2008 09:48
Помогите решить задачу Vegus Общие вопросы C/C++ 1 07.05.2008 17:49