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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2012, 21:22   #1
Zaza7
 
Регистрация: 21.10.2012
Сообщений: 9
По умолчанию Си. Найти в массиве наиболее часто встречающийся элемент.

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

Код:
#include <stdio.h>

int Sravn (int a, int b)
{
if (a=b)
{return 1;}
else 
{return 0;}
}

int main()
{   
     int A[5]={1, 4, 7, 4, 4}, rez1, rez2, rez3, rez4, rez5;
     rez1=Sravn(A[0], A[1])+Sravn(A[0], A[2])+Sravn(A[0], A[3])+Sravn(A[0], A[4]);
     rez2=Sravn(A[1], A[0])+Sravn(A[1], A[2])+Sravn(A[1], A[3])+Sravn(A[1], A[4]);
     rez3=Sravn(A[2], A[0])+Sravn(A[2], A[1])+Sravn(A[2], A[3])+Sravn(A[2], A[4]);
     rez4=Sravn(A[3], A[0])+Sravn(A[3], A[1])+Sravn(A[3], A[2])+Sravn(A[3], A[4]);
     rez5=Sravn(A[4], A[0])+Sravn(A[4], A[1])+Sravn(A[4], A[3])+Sravn(A[4], A[2]);
     
     if (rez1>rez2 || rez1>rez3 || rez1>rez4 || rez1>rez5)
     {printf ("%d", A[0]);}
     else if (rez2>rez1 || rez2>rez3 || rez2>rez4 || rez2>rez5)
     {printf ("%d", A[1]);}
     else if (rez3>rez2 || rez3>rez1 || rez3>rez4 || rez3>rez5)
     {printf ("%d", A[2]);}
     else if (rez4>rez2 || rez4>rez3 || rez4>rez1 || rez4>rez5)
     {printf ("%d", A[3]);}
     else if (rez5>rez2 || rez5>rez3 || rez5>rez1 || rez5>rez4)
     {printf ("%d", A[4]);}
     return 0;
     }
Код некрасивый, но по-другому не получилось
Zaza7 вне форума Ответить с цитированием
Старый 01.12.2012, 21:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У тебя ни одно условие не выполняется, поэтому и не выводит.
Возможно последний if не нужен (последний вывод должен быть сразу под else), но скорее всего сама задумка решения гиблая..
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2012, 21:36   #3
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
A[5]={1, 4, 7, 4, 4};
Я думаю, проблема в том, что второй элемент повторяется два раза, но так же четвертый и пятый элемент повторяются дважды. А в условии проверка (больше / меньше ) поэтому ни одно условие не выполняется. Мне кажется лучше бы ты сделал структуру из 2х полей, первое элемент, второе поле - количество повторений. А потом бы отсортировал по убыванию полученный массив.

Stilet: Опередил
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 01.12.2012, 21:57   #4
Zaza7
 
Регистрация: 21.10.2012
Сообщений: 9
По умолчанию

В смысле структуру? Двухмерный массив?
Zaza7 вне форума Ответить с цитированием
Старый 01.12.2012, 22:19   #5
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

ну вот как это понимаю я:
мы описали структуру. Одно поле в ней - сам элемент, второе - сколько раз он повторяется. Мы проходим весь исходный массив А, находим сколько раз повторяется какой-нибудь элемент и записываем эту информацию в массив m.
осталось отсортировать массив m по убыванию количества повторений)
Вот наброски:
Код:
#include <iostream.h>
struct Count 
{
   int cell;
   int ColCount;
}m[5];
void main ()
{
	int A[5]={1, 4, 7, 4, 4};
	int Count = 0;
	for (int i = 0; i < 5; i++)
	{ 
		Count = 0;
		m[i].cell = A[i];
		for (int j = 0; j < 5; j++)
			if (m[i].cell == A[j])
			{
				Count++;
			}
		m[i].ColCount = Count;
	}

	for (i = 0; i < 5; i++)
		cout << m[i].cell << " " << m[i].ColCount << endl;


}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив, состоящий из символов. Вывести на экран цифру, наиболее часто встречающуюся в этом массиве. Andros_me Помощь студентам 2 21.12.2010 08:50
Найти в массиве наиболее часто встречающееся число. с++ lbvflbvf Общие вопросы C/C++ 52 23.05.2010 22:34
Язык С : Найти наиболее часто встречаемое слово в строке delphi_HOBu4oK Помощь студентам 0 15.05.2010 12:18
Pascal: Наиболее часто встречающееся число в массиве. MaGWaY_minsk Помощь студентам 2 20.01.2010 00:22
Найти (в процентах) частоту появления каждого из m наиболее часто встречающихся элементов sk1p Паскаль, Turbo Pascal, PascalABC.NET 2 26.09.2008 23:57