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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2014, 00:36   #1
NYork
Пользователь
 
Регистрация: 17.11.2014
Сообщений: 35
По умолчанию Массивы С++

Ребят, помогите разобраться. Такое задание- в динамическом массиве вещественных чисел размера n, нужно найти номер максимального элемента массива.
У меня такой код, но в том месте, где нужно искать номер максимального, он ищет среди целых чисел, дробную часть не учитывает, соответственно решение не верное получается.

Нужно сделать, что бы он дробные цифры сравнивал и + еще, если в массиве несколько максимальных чисел, то выводил все номера, где встречаются эти числа.
Заранее Спасибо!

Код:
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
	setlocale(LC_ALL, "RU");
	int n, choice, max, imax, c,i;
	double a, b;
	cout << "Задайте размер массива: ";
	cin >> n;
	cout << endl << "1. Ручной ввод" << endl << "2. Автоматический ввод" << endl;
	cout << endl << "Ваш выбор: ";
	cin >> choice;
	float *arr = new float[n];
	cout << endl;
	if (choice == 2)
	{
		cout << "Введите диапазон значений массива [a;b]" << endl << endl;
		cout << "a: "; cin >> a;
		cout << "b: "; cin >> b;
		cout << endl;
		srand(time(NULL));
		c = (b - a)*10.0 + 1;
		for (int i = 0; i < n; i++)
		{
			arr[i] =(rand() %c +a *10) / 10.0;
			cout << setw(1) << setprecision(3) <<"["<< arr[i] << "] ";
		}
	}
	if (choice == 1)
	{
		for ( i = 0; i < n; i++)
		{
			cout << "Введи значение " << i + 1 << ": ";
			cin >> arr[i];
		}
	}
  {
	  
	  for (i = max = 0, imax = arr[0]; i < n; i++)//ищем номер макимального числа + само число
		  if (max < arr[i])
		  {
		  max = arr[i];
		  imax = i;
		  }
  }
	cout << endl << endl << "Номер максимального =  " << imax+1 << " Само число: " <<max;
	delete[] arr;
	cout << endl << endl;
	return 0;


}

Последний раз редактировалось Stilet; 05.12.2014 в 07:52.
NYork вне форума Ответить с цитированием
Старый 05.12.2014, 10:38   #2
Scorpius
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 26
По умолчанию

Цитата:
Нужно сделать, что бы он дробные цифры сравнивал и + еще, если в массиве несколько максимальных чисел, то выводил все номера, где встречаются эти числа.
Для того чтоб сравнивались дробные цифры необходимо max объявить как переменная дробного типа (у Вас целого).
Добавил вывод всех индексов максимального числа (Код не проверял, но смысл надеюсь понятен )
Код:
	  float max = 0.0;
	  for (i = 0; i < n; i++)//ищем номер макимального числа + само число
		  if (max < arr[i])
		  {
		  	  max = arr[i];
		  }
	  cout << endl << endl << "Номер(a) максимального =  ";
	  for (i = 0; i < n; i++)
	  	  if(arr[i] == max)
	  	  	  cout << i+1 << ", ";
	  cout <<" Само число: " << max << endl;
Не всегда говори то, что знаешь, но всегда знай, что говоришь.
Scorpius вне форума Ответить с цитированием
Старый 05.12.2014, 10:47   #3
NYork
Пользователь
 
Регистрация: 17.11.2014
Сообщений: 35
Хорошо

Премного благодарен, все работает за исключением, если весь массив будет из отрицательных чисел. Замечание дельное, буду учитывать в дальнейшем.
Спасибо!

Последний раз редактировалось NYork; 05.12.2014 в 11:08.
NYork вне форума Ответить с цитированием
Старый 05.12.2014, 12:30   #4
Scorpius
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от NYork Посмотреть сообщение
Премного благодарен, все работает за исключением, если весь массив будет из отрицательных чисел. Замечание дельное, буду учитывать в дальнейшем.
Спасибо!
Инициализируй max первым элементом массива, и заработает для отрицательных чисел.

Код:
float max = arr[0];
Не всегда говори то, что знаешь, но всегда знай, что говоришь.
Scorpius вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12