Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы,Паскаль > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
Астасья
Задание
Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

не получается sad.gif sad.gif sad.gif
вот что я написала


program masiv;uses crt;
const n=10;
var a:array [1..n] of integer;
i,s,p,f:integer;
begin {заполняем массив }
s:=0;
for i:=1 to n do
begin
a[i]:=random(9);
write(a[i]:2);
end; writeln;
while f=0 do
begin {сортируем по возрастанию}
f:=1;
for i:=1 to (n-1) do
if a[i]>a[i+1] then
begin
p:=a[i];
a[i]:=a[i+1];
a[i+1]:=p;
f:=0;
end;end;
for i:=1 to n do
begin {выводим отсартированый массив}
write(a[i]:2);
end;writeln;
begin {что-то не понятное}
for i:=1 to (n-1) do
if a[i]=a[i+1] then
s:=s+1;
end;
writeln('максимальное количество одинаковых элементов.=',s);
end.
?????????????????????????ПОМОГИТЕ!!!
Vahappaday
В конце забыли обнулять s, да и максимальное не запоминали. Выводилось количество повторяющихся чисел вообще. Исправленный вариант ниже:
Код
program masiv;
uses crt;
const n=10;
var a:array [1..n] of integer;
i,s,p,f,smax:integer;
begin {заполняем массив }
    s:=1;
    for i:=1 to n do
    begin
        a[i]:=random(9);
        write(a[i]:2);
    end;
    writeln;
    while f=0 do
    begin {сортируем по возрастанию}
        f:=1;
        for i:=1 to (n-1) do
        if a[i]>a[i+1] then
        begin
            p:=a[i];
            a[i]:=a[i+1];
            a[i+1]:=p;
            f:=0;
        end;
    end;
    for i:=1 to n do
    begin {выводим отсартированый массив}
        write(a[i]:2);
    end;
    writeln;
    smax:=0;
    begin {что-то не понятное}
        for i:=1 to (n-1) do
        if a[i]=a[i+1] then
                s:=s+1
                else s:=1;
        if s>smax then
        smax:=s;
    end;
    writeln('максимальное количество одинаковых элементов.=',smax);
end.

Астасья
это тоже неверно sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif
может кто-нибудь ещё знает...
Vahappaday
А что неверно? Покажите данные, которые генерятся, и какой выводит ответ, помогу подправить, раз уж сам накосячил.
Julia
smax:=0;
for i:=1 to (n-1) do
if a[i]=a[i+1] then
s:=s+1
else begin
if s>smax then
smax:=s;
s:=1;
end;
writeln('максимальное количество одинаковых элементов.=',smax);
Vahappaday
Неа, ибо 1 1 2 2 1 1 даст 2, а нужно 4
Sergio Ramos
Если нет ограничения на время, то в лоб прогнать все элементы и найти тот, у которого больше всех совпадений

Код
#include "iostream"

using namespace std;

int main () {
    int n,s=0,k=0;
    cin >> n;
    int *a=new int[n]; //объявили динамический массив
    
    for (int i=0;i<n;i++) cin >> a[i]; //ввод элементов

    for (int i=0;i<n;i++)  {
        for (int j=0;j<n;j++) if (a[i]==a[j]) k++;
        if (k>s) s=k;
    k=0;}

cout << s;

return 0;}


Под паскаль сами переделайте, давно с ним не сталкивался
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.