2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение07.04.2012, 17:39 
Joker_vD в сообщении #557487 писал(а):
с не более чем двумя элементами,

Да нет, с ровно двумя, иначе фигурные скобки лишены смысла. Оттого и тавтология.

Впрочем, фигня все эти формальности. Главное -- что само понятие "количества равных элементов" лишено смысла. Что, зачем, когда, чему равно?...

(кстати, в стартовом посте условие задачи было сформулировано вполне аккуратно -- там требовалось подсчитать именно различные элементы)

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 08:37 
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
int massiv[MAX];
int Cx;
int flag;

for (int i = 0; i < MAX; i++)
 {
  flag = 0;
  for (int j = 0; j < MAX; j++)
   {
    if (i == j) continue;
    if (massiv[i] == massiv[j]) {flag = 1; break;}
   }

   if (flag == 0) {Cx++; printf (" %u", massiv[i];}
 }
 




Это если только вывести на экран неповторяющиеся числа и подсчитать их количество.

Если требуется считать количество повторов - просто так не получица. Нужно вводить ещё массив, в котором помечать уже найденные повторяющиеся числа, чтобы не считать их по нескольку раз.

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 08:42 
Alexu007 в сообщении #557789 писал(а):
Нужно вводить ещё массив, в котором помечать уже найденные повторяющиеся числа,

Не нужно. Достаточно одного массива, в который заносятся все поступающие числа; и даже не все, а лишь уникальные.

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 09:17 
Ну допустим у вас последовательность 12, 13, 14, 15, 16, 13, 17

Мы проверяем число 13 на второй позиции и естественно находим совпадение с 6-м числом. Что будет, когда будем проверять 13 на шестой позиции? Если мы проверяем с начала - ещё раз посчитаем совпадение с "вторым" 13, а если не с начала - то мы вообще не найдём совпадения и будем считать 13 единственным.

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 11:28 
Alexu007 в сообщении #557800 писал(а):
Мы проверяем число 13 на второй позиции и естественно находим совпадение с 6-м числом.

Не находим, читайте внимательнее:

ewert в сообщении #557390 писал(а):
Используется синтаксис Pascal
num:=0;
for i := 1 to n do begin
    findeq:=false;
    for j := 1 to i-1 do begin
        findeq:=( f[i] = f[j]);
        if findeq then break;
    end;
    if not findeq then begin
        inc(num);
        writeln(f[i]);
    end;
end;

А ещё лучше, конечно, так:

Используется синтаксис Pascal
num:=0;
for i := 1 to n do begin
    readln(x);
    findeq:=false;
    for j := 1 to i-1 do begin
        findeq:=(f[i] = x);
        if findeq then break;
    end;
    if not findeq then begin
        inc(num);
        f[num]:=x;
        writeln(x);
    end;
end;

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 12:40 
Вы правы. Хороший цикл, 1-й элемент не сравнивается ни с чем, 2-й с 1-м, 3-й с 2-м и 1-м и так далее. Нужно запомнить, может пригодится когда...

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 18:51 
Alexu007 в сообщении #557883 писал(а):
Хороший цикл, 1-й элемент не сравнивается ни с чем, 2-й с 1-м, 3-й с 2-м и 1-м и так далее. Нужно запомнить, может пригодится когда...
Удивительно. Такие циклы конструируются на ура при надобности, вы никогда таких не видели? :shock:

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 20:11 
ewert в сообщении #557842 писал(а):
Используется синтаксис Pascal
num:=0;
for i := 1 to n do begin
    readln(x);
    findeq:=false;
    for j := 1 to i-1 do begin
        findeq:=(f[i] = x);
        if findeq then break;
    end;
    if not findeq then begin
        inc(num);
        f[num]:=x;
        writeln(x);
    end;
end;

Упс, пардон, зазивалси. Правильная версия:

Используется синтаксис Pascal
num:=0;
for i := 1 to n do begin
    readln(x);
    findeq:=false;
    for j := 1 to num do begin
        findeq:=(f[i] = x);
        if findeq then break;
    end;
    if not findeq then begin
        inc(num);
        f[num]:=x;
        writeln(x);
    end;
end;
[/quote]

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 22:02 

(Оффтоп)

ewert в сообщении #557540 писал(а):
Да нет, с ровно двумя, иначе фигурные скобки лишены смысла.

Т.е. когда пишут $\{a,b\}$, это явно подразумевает $a\ne b$? Хорошо, я запомню, спасибо.

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 22:14 

(Оффтоп)

Joker_vD в сообщении #558141 писал(а):
Т.е. когда пишут $\{a,b\}$, это явно подразумевает $a\ne b$? Хорошо, я запомню, спасибо.

нет, не надо ничего запоминать, я и сам никаких правил не помню. Просто я не понимаю, как бы это могло иначе интерпретироваться.

 
 
 
 Re: Подсчетивывод неравных элементов числовой последовательности
Сообщение08.04.2012, 23:02 
Ну, когда $a = b$, $\{a, b\} = \{a, a\} \equiv \{a\}$. Возможность записи вида $\{a, a, a, a, a, a\}$ и полезна в некоторых случаях, и просто вытекает из определения записи $x \in \{a_1, \ldots, a_n\} :\Leftrightarrow x = a_1 \vee \ldots \vee x = a_n$ для $n \in \mathbb N$.

Скорее всего, я вас не так понял.

-- Пн апр 09, 2012 02:04:04 --

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

 
 
 [ Сообщений: 26 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group