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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2014, 16:06   #1
vitaliz
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 10
По умолчанию Массив:проблемы с глобальными переменными(С\С++)

Правильно ли глобальной переменной в функции типа void присвоить значение, а потом это значение использовать в других функциях?

Программа должна находить наименьший среди положительных элементов -величину и индекс(соответственно необходимо вывести величину и индекс)+поменять местами найденный и максимальный элементы.

Что б не второй раз не писать код поиска минимального элемента.

Код:
#include "stdafx.h"
#include <stdio.h>
#include <locale>
#include <time.h>
#include <iostream>
using namespace std;
const int n=15;
float D[n];
int k, j, index;
//вихідний масив
void input_D(float*);
void output_D(float*);
void min_element_D(float D[]);
void swap_element_D(float D[]);
int main()
{
	input_D(D);
	cout<<"D:\n "; output_D(D);
	cout<<"m:"; min_element_D(D);
	swap_element_D(D);
	system("pause");
}
void input_D(float *p)
{
	srand((unsigned)time(NULL));
	for (int i=0;i<n;i++)
		{
	*p=(10+10)*(float)rand()/ RAND_MAX-10;
	p++;
		}
}
void output_D(float*p)
{   
	for (int i=0; i<n; i++) 
	printf("%5f\n", *(p+i)); 
	printf("\n");
}
void min_element_D(float D[])
{
	float min = 1000;
    for (int i = 0; i<n; i++) {
        if (D[i]<min && D[i]>0) {
            min = D[i];
		    index=i;
        }
    }
	printf("Minimum of positive elements: %f\n", min);
	printf("The index of the minimal element: %i\n", index);
}
void swap_element_D(float D[])
{
	float value;
	float max= D[0];
    for (int i = 0; i< n; i++) {
        if ( D[i] > max) {
            max = D[i];
			j=i;
        }
    }
value=D[index];
D[index]=D[j]; 
D[j]=value; 
output_D(D);
}

Последний раз редактировалось Stilet; 12.01.2014 в 17:23.
vitaliz вне форума Ответить с цитированием
Старый 12.01.2014, 18:03   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

В Вашем случае можно обойтись и без глобальных переменных.
Что Вам мешает гонять за собой из функции в функцию сам массив, его размерность и другие по мере необходимости данные?

Цитата:
Что б не второй раз не писать код поиска минимального элемента.
А и не надо искать, просто передайте в функцию индекс найденного минимального элемента и никаких проблем

Глобальные переменные обычно приводят к неприятностям, поэтому использовать их рекомендуется только в исключительных ситуациях (да, такие бывают).
Базиля вне форума Ответить с цитированием
Старый 12.01.2014, 19:44   #3
vitaliz
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 10
По умолчанию

Понял, спасибо за помощь
vitaliz вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С#. Массив. обмен переменными timzyed Помощь студентам 7 14.11.2013 23:55
динамический массив с переменными типа double ogyrcheg C# (си шарп) 4 25.02.2012 10:55
большой массив данных с несколькими переменными Dexter_M Microsoft Office Excel 27 04.10.2011 14:21
Delphi - тест программа, проблемы с переменными Skorpion555 Помощь студентам 3 25.03.2010 19:23
Проблема с глобальными переменными yulia PHP 4 04.11.2008 02:47