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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2012, 02:07   #1
RockFeller
 
Регистрация: 06.12.2012
Сообщений: 3
По умолчанию Задача по одномерным массивам.(найти ошибку)

Всем доброго времени суток, уважаемые форумчане прошу вашей помощи в решении задачи.
Дан массив A(N), определить количество положительных элементов, стоящих после минимального значения элемента массива.


Вот, что у меня получилось.Я никак не могу найти ошибку. Прошу вашей помощи.

Код:
Program qwe;
var i,n,ind,kol,min: integer;
a: array [1..10] of Integer;
Begin
writeln('Введите количество элементов массива');
readln(n);
for i:=1 to n do
write('a[',i,']');
readln(a[i]);
min:=a[i];
ind:=1;
kol:=0;
for i:=1 to n do
if i>1 then
if a[i-1]=a[i] then
kol:=kol+1;
if a[i]<min then
begin
min:=a[i];
ind:=i;
end;
end;
if kol=(n-1) then
writeln('Все элементы массива одинаковы')
else
begin
kol:=0;
for i:=ind to n do
if a[i]>0 then kol:=kol+1;
end;
if kol=0 then writeln('Нет положительных элементов')
else writeln(kol);
end.
RockFeller вне форума Ответить с цитированием
Старый 06.12.2012, 04:37   #2
Willer55
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 35
По умолчанию

1. У тебя в коде не заполняется массив, а N раз выполняет write('a[',i,']');
2. Из-за пункта 1 все выполняется не верно.

Задача решается в 1 цикл
Алгоритм:
мин = 0
КолВо = 0
Цикл начинается
заполняешь массив[I]
Если мин <= массив[I] Тогда
Если массив[I] > 0 Тогда
КолВо + 1
конец условия
иначе
мин = массив[I]
КолВо = 0
конец условия
конец цикла
Willer55 вне форума Ответить с цитированием
Старый 06.12.2012, 08:25   #3
RockFeller
 
Регистрация: 06.12.2012
Сообщений: 3
По умолчанию

Все равно не получилось....
RockFeller вне форума Ответить с цитированием
Старый 06.12.2012, 08:55   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А чего получилось, показывай
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 06.12.2012, 09:42   #5
domovou
Пользователь
 
Аватар для domovou
 
Регистрация: 01.09.2012
Сообщений: 88
По умолчанию

Код:
Program qwe;
var i,n,kol,min: integer;
    a: array [1..100] of Integer;
Begin
writeln('Введите количество элементов массива');
readln(n);
min:=1;
for i:=1 to n do
    begin
    write('a[',i,']');
    readln(a[i]);
    if a[i]<a[min] then min:=i;
    end;
writeln('Min = ',a[min],'  ego nomer = ',min);
kol:=0;
if min=n then writeln('Min element posled')
   else
   for i:=min to n do
       if a[i]>0 then inc(kol);
if kol=0 then writeln('Нет положительных элементов')
   else writeln('Posle min - ',kol, ' pologit elementa');
readln;
end.
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
domovou вне форума Ответить с цитированием
Старый 06.12.2012, 12:21   #6
WillyWonka
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 12
По умолчанию

Заметил небольшую неточность:
если Ваш массив статичен, зачем задавать количество элементов? Если задать значение бОльшее 100 (в Вашем примере), то программа выйдет за границы. В таком случае, лучше воспользоваться функцией setlength.

Цитата:
Program qwe;
var i,n,count,min: integer;
a: array of Integer;
Begin
writeln('Введите количество элементов массива');
readln(n);
count:=0;
setlength(a, n);

for i:=0 to n-1 do
begin
write('Enter a[',i+1,']: ');
readln(a[i]);
if i= 0 then
min:=a[i];
if a[i]>0 then
inc(count);
if a[i] < min then
begin
min:=a[i];
count:=0;
end;
end;
write(min, ' ', count);
end.

Последний раз редактировалось WillyWonka; 06.12.2012 в 12:23.
WillyWonka вне форума Ответить с цитированием
Старый 06.12.2012, 13:52   #7
RockFeller
 
Регистрация: 06.12.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от domovou Посмотреть сообщение
Код:
Program qwe;
var i,n,kol,min: integer;
    a: array [1..100] of Integer;
Begin
writeln('Введите количество элементов массива');
readln(n);
min:=1;
for i:=1 to n do
    begin
    write('a[',i,']');
    readln(a[i]);
    if a[i]<a[min] then min:=i;
    end;
writeln('Min = ',a[min],'  ego nomer = ',min);
kol:=0;
if min=n then writeln('Min element posled')
   else
   for i:=min to n do
       if a[i]>0 then inc(kol);
if kol=0 then writeln('Нет положительных элементов')
   else writeln('Posle min - ',kol, ' pologit elementa');
readln;
end.
Благодарю вас. Вы меня выручили.
RockFeller вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа по одномерным массивам loldfox Помощь студентам 3 26.11.2010 09:28
Задача по одномерным массивам(паскаль) pupik100 Помощь студентам 2 23.10.2009 16:32
Задача к одномерным массивам. kry Паскаль, Turbo Pascal, PascalABC.NET 2 29.12.2008 09:57