Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Закрытая тема
 
Опции темы Опции просмотра
Старый 28.12.2011, 23:10   #1 (permalink)
Tru-lya-lya
Member
 
Регистрация: 11.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Red face Срочно нужна помощь

нужно решить 2 задачи на паскале abc. помогите пожалуйста..завтра нужно сдать..не успеваю=(

1.Счастливым будет считаться такое число из шести цифр, в котором сумма левых трех цифр равна сумме правых трех цифр.Например: 457961
4+5+7 = 9+6+1. Вывести на экран все счастливые числа в интервале от А до В и подсчитать их количество.

2. Написать программы, при выполнении которых в целочисленном массиве определяется число соседств простого числа и четного с нечетным индексом.
Tru-lya-lya вне форума  

Старый 28.12.2011, 23:10
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Обсуждения имеют общий смысл с вашей темой, прочтите их

Срочно нужна помощь Windows XP
Срочно нужна помощь
Ассемблер. Срочно нужна помощь
Срочно нужна помощь по VBA Excel
Срочно нужна помощь!

Старый 29.12.2011, 10:57   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tru-lya-lya Посмотреть сообщение
2. Написать программы, при выполнении которых в целочисленном массиве определяется число соседств простого числа и четного с нечетным индексом.
Код:
Const
 N=40;
Var
 A:Array[1..N] of Byte;
 i,Nn:Byte;

Function Prime(p:byte):Boolean;
var b:boolean; m:byte;
begin
 b:=false;
 If p>3 then
  begin
   m:=(p div 2)+1;
   Repeat
    Dec(m);
    If (p mod m)=0 then b:=true;
   Until b or (m=2);
  end;
 Prime:=Not(b);
end;

Begin
 Randomize;
 Nn:=0;
 For i:=1 to N do
  begin
   A[i]:=Random(99)+1;
   Write(A[i]:4);
  end;
 Writeln;
 Writeln;
 For i:=1 to (N div 2) do
  begin
   If Prime(A[2*i]) and ((A[2*i-1] mod 2)=0) then
    begin
     Inc(Nn);
     Writeln('A[',(2*i-1):2,']=',A[2*i-1]:2,' - even,    A[',2*i:2,']=',A[2*i]:2,' - prime');
    end;
   If (2*i<N) and Prime(A[2*i]) and ((A[2*i+1] mod 2)=0) then
    begin
     Inc(Nn);
     Writeln('A[',2*i:2,']=',A[2*i]:2,' - prime,   A[',(2*i+1):2,']=',A[2*i+1]:2,' - even');
    end;
  end;
 Writeln;
 Writeln(Nn,' pairs');
 Readln;
End.
Vladimir_S вне форума  
Старый 29.12.2011, 16:06   #3 (permalink)
Tru-lya-lya
Member
 
Регистрация: 11.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ооой...а вы бы не могли пояснить как тут все работает?? как-то сложно все написано)))
в этой задачке вроде нужно 2 решения? или как??? или вы решили все в одном решении??? расскажите пожалуйста что вы делали?
Tru-lya-lya вне форума  
Старый 29.12.2011, 16:14   #4 (permalink)
Margosham-k
Member
 
Регистрация: 07.12.2011
Сообщений: 35
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

О!! мне тоже нужна ваша первая задачка!!! =)
Margosham-k вне форума  
Старый 29.12.2011, 16:17   #5 (permalink)
Tru-lya-lya
Member
 
Регистрация: 11.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я так понимаю здесь одна задача посчитать число соседств простого числа, а вторая программулинка определить число четных чисел с нечетным индексом...вот...((
Tru-lya-lya вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 29.12.2011, 16:28   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tru-lya-lya Посмотреть сообщение
1.Счастливым будет считаться такое число из шести цифр, в котором сумма левых трех цифр равна сумме правых трех цифр.Например: 457961 4+5+7 = 9+6+1. Вывести на экран все счастливые числа в интервале от А до В и подсчитать их количество.
Значит так, поскольку требуется вывести результат на экран, в программе ограничено количество "счастливых" чисел двумястами штуками. Если их получается больше, то предлагается сузить диапазон.
Проверить можно, задав, например, 100000 - 108420 (тут их ровно 200).
Код:
VAR
 A:Array[1..200] of LongInt;
 Nmin,Nmax,k,n1,n2:LongInt;
 N,i,j:Byte;
BEGIN
 REPEAT
  N:=0;
  Write('Nmin= ');
  Readln(Nmin);
  Write('Nmax= ');
  Readln(Nmax);
  k:=Nmin-1;
  Repeat
   Inc(k);
   n1:=(k div 100000)+((k mod 100000) div 10000)+((k mod 10000) div 1000);
   n2:=((k mod 1000) div 100)+((k mod 100) div 10)+(k mod 10);
   If n1=n2 then
    Begin
     Inc(N);
     If N>200 then
      Writeln('Too wide range! Narrow it!')
     else
      begin
       A[N]:=k;
      end;
    End;
  Until (N>200) or (k=Nmax);
 UNTIL N<=200;
 For i:=1 to 20 do
  For j:=1 to 10 do
   begin
    k:=(i-1)*10+j;
    if k<=N then write(A[k]:8);
   end;
 Writeln;
 Writeln('N= ',N);
 Readln;
END.
Vladimir_S вне форума  
Старый 29.12.2011, 16:34   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tru-lya-lya Посмотреть сообщение
ооой...а вы бы не могли пояснить как тут все работает?? как-то сложно все написано)))
в этой задачке вроде нужно 2 решения? или как??? или вы решили все в одном решении??? расскажите пожалуйста что вы делали?
Ну тогда значит я не понял формулировки условия. Здесь так:
1. Формируется массив.
2. В нем ищутся простые числа, стоящие на четных позициях (функция Prime - это проверка того, простое число или нет; если простое - возвращает true).
3. Проверяется, является ли предыдущий или последующий, иначе говоря, "соседний" элемент массива четным. И если да, то эта пара (простое плюс сосед) выводится на экран.

А как надо было?
Вероятно, я не так понял термин "соседство". Разъясните, пожалуйста. Что-то мне помнится, была какая-то хрень с таким названием то ли из теории множеств, то ли из теории чисел.
Vladimir_S вне форума  
Старый 29.12.2011, 17:02   #8 (permalink)
Margosham-k
Member
 
Регистрация: 07.12.2011
Сообщений: 35
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

счастливые числа!


Цитата:
PROGRAM schastlivyi_bilet;
Uses crt;
var a,b,i,kol:integer;
Procedure S(a,b:integer);
var x,l,h,g,j,r,sumL,sumR:integer;
begin
kol:=0;
for i:=a to b do
begin
sumL:=0;
g:=i;
sumR:=0;
r:=0;
l:=i;
x:=0;
h:=i;

while l>0 do
begin
l:=l div 1000 ;
x:=x+1;;
end;
for j:=1 to x div 2 do
begin
r:=h mod 1000;
h:=h div 1000;
sumR:=sumR+r;
end;
for j:=x div 2+1 to x do
begin
r:=h mod 1000;
h:=h div 1000;
SumL:=SumL+r;
end;
if SumR=SumL then begin
write(g:8);
kol:=kol+1; end;
end;
end;

begin
Write('Введите отрезок от А(>100 000) до Б(<1000 000): ');
readln(a,b);
s(a,b);
write ('Количество счастливых билетов в промежутке от ',a,' до ',b,' = ',kol:4);
end.
Margosham-k вне форума  
Старый 29.12.2011, 17:11   #9 (permalink)
Tru-lya-lya
Member
 
Регистрация: 11.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо=)

я так подумала, в принципе вы правы! и правильно написали все и поняли задание... только вот я тестирую ваше решение и она немного некорректно работает....или я что-то не так делаю..
Tru-lya-lya вне форума  
Старый 29.12.2011, 17:16   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Margosham-k Посмотреть сообщение
счастливые числа!
Не пойдёт! Вы сделали отбор не по суммам цифр, а по простому равенству правой и левой частей.
Попробуйте запустить мою программу, только если у Вас этот... АВС, то замените формат LongInt форматом Integer.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Закрытая тема

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.