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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2011, 21:13   #1
GranDi
Новичок
Джуниор
 
Аватар для GranDi
 
Регистрация: 11.03.2011
Сообщений: 1
Вопрос Маленький нюанс при заполнении массива.

Обращаюсь к помощи могущественных сего мира Есть такая задачка:
Код:
// В одномерном массиве, состоящем из n вещественных элементов, вычислить:
//		1) количество элементов массива, больших С;
Ну и решается это всё следующим способом:
Код:
int main()
{
	int n;
	double c;
	int i, c_number = 0;
// Количество элементов массива
	cout << "\nInput number of elements: ";
	cin >> n;		
// Массив (вводить через пробел. в конце Enter)
	double *a = new double [n];	
	cout << "\nInput elements of array: ";
	for (i=0; i<n; i++)cin >> a[i];	
// Здесь вводиться число с которым будут сравниваться элементы массива.
	cout << "Input any value: ";
	cin >> c;

// Количество элементов больших С	
	for (i=0; i<n; i++)
	{
		if (a[i] > c) c_number++;
	}
}
Сама по себе она элементарнейшая, но возникает один нюанс: если ввести число элементов массива больше чем n, то n+1 элемент автоматом забьётся в с что крайне неприемлемо. Не знаю как решить эту проблему. В идеале нужно чтобы забивался массив, причём можно было написать сколько угодно элементов и при этом n ушли в массив, а остальные просто испарились. А потом появилась надпись "Введите с" и мы бы могли спокойно ввести с.
GranDi вне форума Ответить с цитированием
Старый 03.08.2011, 00:22   #2
Kulikcha
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 15
По умолчанию

Здравствуйте! В данном случае это не допустимо. Если вы сделаете так, как вы сказали, то массив переполнится. (из ваших слов я заключил, что это именно так, ели я ошибся, то не в обиден).Это может превести к разрушению системы и очень опасно. А программа корректна. Надо бы реализовать проверку достижения границ массива. Указатели изучал?
Kulikcha вне форума Ответить с цитированием
Старый 03.08.2011, 01:24   #3
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

сходу так не вспомню, но как вариант - обработка потока ввода массива в одну строку, и затем разбивка строки (split, правда не помню есть он в с++ или нет), а уже опираясь на полученный массив использовать n его элементов (но соответственно элементы массива должны писаться в строчку)
или второй вариант - цикл с постусловием и запросом на ввод доп. элемента при вводе более n элементов
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интегрирование(ошибка при заполнении массива) Erwin Помощь студентам 0 30.04.2011 17:27
Ошибка при заполнении TStringStream kakawkin Общие вопросы Delphi 2 05.10.2010 06:25
Где кроется ошибка при заполнении массива структур? sunplant Общие вопросы C/C++ 2 08.06.2010 20:53
ошибка в заполнении двумерного массива в файл серг Общие вопросы C/C++ 0 19.02.2010 09:43
Возник вопрос при заполнении массива.. SnakeMan Помощь студентам 8 15.01.2008 12:31