Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Необходимо написать программу (http://www.tehnari.ru/f41/t93093/)

Chelios_rus 14.12.2013 01:06

Необходимо написать программу
 
Вот задание:
Найти, есть ли в последовательности чисел, вводимых с клавиатуры, три одинаковых числа, следующих подряд. Признак завершения ввода: первое число встретилось три раза.

Gruvi 14.12.2013 01:10

какой язык программирования ?:telepat:

Если паскаль, то
Цитата:

program _numbs;

var

N, count :integer;
N_prev, exit_count :integer;

BEGIN

{input & process. }
while exit_count < 3 do
begin
Write('N: ');Readln(N);
if not (odd(N)) then inc(count);
if N=N_prev then inc(exit_count)
else exit_count:=1;
N_prev:=N;
end;

{ output }
write('количество четных: ',count);

END.

Chelios_rus 14.12.2013 01:13

да паскаль, спасибо большое))

Gruvi 14.12.2013 01:14

не за что, разбирайтесь.

Chelios_rus 14.12.2013 01:38

извините, а разве в задании просят что бы программа искала количество четных чисел?
там другое задание, или я чего то не понял

Gruvi 14.12.2013 02:15

Да, прошу прощения, ошибся немного, ну если можете, сами доделаете. Прям вашего задания у меня не оказалось.

Есть вот такая программа: Дан одномерный массив из 10 целых чисел подсчитать наибольшее число одинаковых идущих подряд в нем чисел.
Цитата:

uses crt;
const n=10;
var a:array[1..n] of integer;
i,j,k,mx,imx:byte;
begin
clrscr;
randomize;
writeln('Введите ',n,' целых чисел, в том числе одинаковые подряд:');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
i:=2;mx:=0;imx:=0;
while i<=n do
if a[i]=a[i-1] then
begin
j:=i;k:=1;
while (a[j]=a[j-1])and(j<n) do
begin
j:=j+1;
k:=k+1;
end;
if k>mx then
begin
mx:=k;
imx:=i-1;
end;
i:=i+k;
end
else i:=i+1;
if mx=0 then write('Нет одинаковых рядом!')
else
begin
writeln('Максимальная последовательность одинаковых чисел=',mx);
for i:=imx to imx+mx-1 do
write(a[i],' ');
end;
readln
end.

Chelios_rus 14.12.2013 02:29

хорошо сам исправлю, а вот на подобие этой программы, у меня есть тоже задание:
Даны внешние и внутренние радиусы двух колец, центры которых находятся в начале координат. Даны координаты десяти точек. В какое из колец попадет больше точек?
по заданию конечно отличается, но принцип написания программы примерно такой же, можете ли вы с этой помочь?

Gruvi 14.12.2013 03:42

Могу и с этой помочь=) совсем вы люди обленились, а ведь у меня тоже сессия =)
на держи программу:
Цитата:

uses crt;
const n=10;
type point=record
x,y:real;
end;
mas=array[1..n] of point;
function Rasst(t:point):real;
begin
Rasst:=sqrt(sqr(t.x)+sqr(t.y));
end;
function Count(r1,r2:real;t:mas):integer;
var k,i:integer;
begin
k:=0;
for i:=1 to n do
if (Rasst(t[i])>=r1*r1)and(Rasst(t[i])<=r2*r2) then inc(k);
Count:=k;
end;
procedure Vvod(var r1,r2:real;k:integer);
begin
repeat
writeln('Введите внутренний и внешний радиусы кольца ',k);
readln(r1,r2);
until(r1>0)and(r2>r1);
end;
var vn1,vs1,vn2,vs2:real;
a:mas;
i,k1,k2:integer;
begin
clrscr;
writeln('Введите координаты ',n,' точек');
for i:=1 to n do
begin
writeln('Точка ',i);
write('x=');readln(a[i].x);
write('y=');readln(a[i].y);
end;
clrscr;
writeln('Координаты точек:');
write(' ');
for i:=1 to n do
write(i:6);
writeln;
write('X:');
for i:=1 to n do
write(a[i].x:6:2);
writeln;
write('Y:');
for i:=1 to n do
write(a[i].y:6:2);
writeln;
writeln;
Vvod(vn1,vs1,1);
Vvod(vn2,vs2,2);
k1:=Count(vn1,vs1,a);
k2:=Count(vn2,vs2,a);
writeln('Количество точек в кольце 1=',k1);
writeln('Количество точек в кольце 2=',k2);
if k1>k2 then write('В кольце 1 больше')
else if k1<k2 then write('В кольце 2 больше')
else write('Количество точек в кольцах равное');
readln
end.

Chelios_rus 15.12.2013 02:35

огромное просто тебе человеческое спасибо, удачи сдать сессию)


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.