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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2016, 11:27   #1
Shainik
 
Регистрация: 27.09.2016
Сообщений: 6
По умолчанию (си) Очень нужна помощь! В статическом массиве найти количество элементов встречающихся более одного раза

Задание следующее:Дан целочисленный массив. Определить:
1) количество нулевых элементов;
2) количество чисел, встречающихся в заданном массиве более одного раза.
1. Верхняя и нижняя границы для значений элементов массива вводятся с клавиатуры. Программа должна по выбору пользователя либо заполнять массив с консоли, либо с помощью генератора случайных чисел.
2. Каждый логически законченный фрагмент должен быть оформлен в виде отдельной функции.
3. Все необходимые данные для функции должны передаваться в качестве параметров (глобальные переменные запрещены!).

Вот что у меня получилось, количество повторяющихся элементов считает не правильно и нужно разбить на функции не используя глобальные переменные
Код:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <iostream>
#include<math.h>

int main(){
	setlocale(LC_ALL, "Russian");
	int min;
	int max;
	const int max_size = 100; //Максимальный размер массива
	int i;
	int n; //Будущий реальный размер массива
	int mass[max_size] = { 0 };
	int count, count_2;
	count = 0;
	count_2 = 0;

	printf("Введите размерность массива n: ");
	scanf_s("%i", &n);
	printf("Введите min: ");
	scanf_s("%i", &min);
	printf("Введите max: ");
	scanf_s("%i", &max);
	//=====================================//
	srand(time(0)); //Заполняем массив с помощью генератора случайных чисел
	for (int i = 0; i < n; i++) {
		mass[i] = min + (rand() % (max - min));
	}

	for (int i = 0; i < n; i++){ //Проверка заполнения 
		printf("%i ", mass[i]);
	}
	printf("\n");

	//==================================//
	for (int i = 0; i < n; i++)  //Подсчитываем число нулевых элементов
	{
		if (mass[i] == 0) count = count++;
	}
	printf("Число нулевых элементов массива %d\n", count);
	//======================================//

	for (int i = 0; i < n; i++); {
		int j;
		j = i + 1;

		if (mass[i] == mass[j]) count_2++;
	}
	printf("Число элементов, повторяющихся более оного раза %d\n", count_2);
	system("Pause");

	return 0;
}

Последний раз редактировалось Serge_Bliznykov; 26.10.2016 в 11:48. Причина: исправил теги [CODE]
Shainik вне форума Ответить с цитированием
Старый 26.10.2016, 12:44   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Уважаемый, ты ждёшь пока кто-то доделает за тебя или готов тоже подключиться к работе?

И что ты знаешь про функции?
ura_111 вне форума Ответить с цитированием
Старый 26.10.2016, 13:04   #3
Shainik
 
Регистрация: 27.09.2016
Сообщений: 6
По умолчанию

Нет, я бы хотел чтобы мне помогли с количеством повторяющихся элементов, что я делаю не так?
Нужно разбить на отдельные функции, чтобы каждая из них работала отдельно. Объявить функции нужно с помощью формальных переменных.
Shainik вне форума Ответить с цитированием
Старый 26.10.2016, 13:10   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Не так:
1. сравнивает только текущий и следующий за ним
2. при этом цикл у вас идет до последнего элемента, с чем его будете сравнивать?
p51x вне форума Ответить с цитированием
Старый 26.10.2016, 18:48   #5
Shainik
 
Регистрация: 27.09.2016
Сообщений: 6
По умолчанию

Я не понимаю, что мне нужно сделать, последний элемент он сравнивает с предпоследним, разве не так?
Shainik вне форума Ответить с цитированием
Старый 26.10.2016, 20:04   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Нет. Пусть есть массив 1 2 1. По задаче ответ 1, ваш алгоритм даст 0
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить максимальное из чисел, встречающихся в заданной матрице более одного раза. VS2008 messiman Общие вопросы C/C++ 1 03.06.2014 01:40
даны n, массив t(N). Найдите максимальное из чисел, встречающихся в заданной последовательности более одного раза Кан Паскаль, Turbo Pascal, PascalABC.NET 1 26.12.2013 08:35
Максимальное из чисел, встречающихся в заданной матрице более одного раза voodooism Общие вопросы C/C++ 15 23.01.2013 20:33
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
Найти все слова встречающиеся более одного раза(Си).Использовать двумерный массив. persalena Помощь студентам 1 07.12.2008 00:46