Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46

Исправить без использования глобальных переменных

10.06.2012, 17:16. Показов 1430. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<iostream>
using namespace std;
int a[100],n,maximum=-1000,x;
void zapros()
{
 cout<<"Vvedite razmer massiva"<<endl;
}
void maxim()
{
 cout<<"Vvedite massiv iz "<<n<<" elementov:"<<endl;
}
void sh()
{
 cout<<"Maximum vydelen znakami '[' i ']'"<<endl;
}
void max()
{
 for(int i=0; i<n; ++i)
 {
 cin>>a[i];
 if(a[i]>maximum)
 {
 maximum=a[i];
 x=i;
 }
 }
}
void dobig()
{
 for(int i=0; i<x; ++i)
 {
 for(int j=0; j<x; ++j)
 {
 if(a[i]<a[j])swap(a[i],a[j]
 }
 }
}
void dosmall()
{
 for(int i=x+1; i<n; ++i)
 {
 for(int j=x+1; j<n; ++j)
 {
 if(a[i]>a[j])swap(a[i],a[j]
 }
 }
}
void show()
{
 for(int i=0; i<n; ++i)
 {
 if(i==x)
 {
 cout<<"["<<a[i]<<"] ";
 }
 else cout<<a[i]<<" ";
 
 }
 cout<<endl;
}
int main()
{
 zapros(
 cin>>n;
 maxim(
 max(
 dobig(
 dosmall(
 sh(
 show(
}
Сказали нужно исправить. без использования глобальных переменных. Массивы надо передавать в функции как параметры.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2012, 17:16
Ответы с готовыми решениями:

Массив (переписать без глобальных переменных)
Помогите написать ету програму без глобальных переменных #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; ...

Процедура без глобальных переменных для вывода суммы элементов матрицы и номера строки с минимальной суммой элементов
Задание: составить процедуру без глобальных переменных выполняющуюю для для матрицы D с размерами kхl(k&lt;8 и l&lt; 10) необходимо...

Вывод числа в столбик (без использования строковых переменных)
Дано натуральное число N. Не используя строковые переменные, вывести в столбик это число. Для решения использовать функции целочисленного...

11
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 17:27
Bukharov11, кто такие чутки и зачем их исправлять?
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
10.06.2012, 17:35  [ТС]
Чуток это немного)
препод вот что сказал по этому тексту: Ни каких глобальных переменных! Массивы надо передавать в функции как параметры.
вот надо переделать, а как не знаю.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 17:36
А что прога вообще делает?
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
10.06.2012, 18:26  [ТС]
taras atavin, Дан массив из n целых чисел. Найти первый максимум в этом массиве, а затем все числа до этого элемента упорядочить по возрастанию, а после — по убыванию.

вот что надо сделать. Но с использованием функций.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 18:52
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream.h>
 
unsigned int  SizeQwery  (                                    );
int          *InputArray (unsigned int  n                     );
unsigned int  FindMax    (int          *array, unsigned int  n);
void          Sort       (int          *array, unsigned int  n);
void          OutputArray(int          *array, unsigned int  n);
void          FreeArray  (int          *array                 );
 
int main ()
{
 unsigned int  n;
 int          *array=nullptr;
 unsigned int  max;
 n=SizeQwery();
 if (n>0)
 {
  array=InputArray(n       );
  m    =FindMax   (array, n);
  std::cout<<"Первый максимум - "<<m<<"-й элемент, равный "<<array[m]<<"."<<std::endl;
  Sort       (array, n);
  OutputArray(array, n);
  FreeArray  (array   );
 }
 return 0
}
 
unsigned int  SizeQwery  (                                    )
{
 unsigned int result;
 std::cout<<"Введи размер массива: ";
 sdd::cin>>result;
 std::cout<<"."<<std::endl;
 return result;
}
 
int          *InputArray (unsigned int  n                     )
{
 int *result;
 int *p;
 int *e;
 result=new int [n];
 for (e=result+n-1; p=result; p<=e; ++e)
 {
  std::cout<<"Введи "i<<"-й элемент";
  sdd::cin>>*p;
  std::cout<<"."<<std::endl;
 }
 return result;
}
 
unsigned int  FindMax    (int          *array, unsigned int  n)
{
 int *max;
 int *e;
 int *p;
 (for max=array, e=array+n-1, p=aray; p<=e; ++p)
 {
  if (*max<*p)
  {
   max=p;
  }
 }
 return (unsigned int)(p-array);
}
 
void          Sort       (int          *array, unsigned int  n)
{
 unsigned int  m;
 int          *p1;
 int          *p2;
 int          *e;
 int           t;
 m=FindMax(array, n);
 for (e=array+m, p1=array; p1<e; ++p1)
 {
  for (p2=p1+1; p2<=e; ++p2)
  {
   if (*p1>*p2)
   {
     t =*p1;
    *p1=*p2;
    *p2= t;
   }
  }
 }
 for (e=array+n-1, p1=array+m+1; p1<e; ++p1)
 {
  for (p2=p1+1; p2<=e; ++p2)
  {
   if (*p1<*p2)
   {
     t =*p1;
    *p1=*p2;
    *p2= t;
   }
  }
 }
}
 
void          OutputArray(int          *array, unsigned int  n)
{
 int *p;
 int *e;
 for (e=array+n-1, p=array; p<=e; ++p)
 {
  std::cout<<i<<"-й элемент равен "<<*p<<"."<<std::endl;
 }
}
 
void          FreeArray  (int          *array                 )
{
 delete [] array;
}
Что сложного?
1
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
10.06.2012, 18:54  [ТС]
А проще можно? Препод просто не поверит, что это я сделал.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 19:01
Сложнее, ты хотел сказать. До указателей нельзя проходить параметры-массивы, так как они передаются только по указателям.

Добавлено через 2 минуты
И у тебя есть вызов функции swap, а это уже усложнение. Я обошелся без этой функции.

Добавлено через 1 минуту
У тебя одновременно max, maxim и maximum. Это ещё вообще лишняя дебря. У меня её нет. Безпрототиповые функции страдают такой сложностью - надо следить за порядком их определения. Я и это упростил.
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
10.06.2012, 19:01  [ТС]
А без беззнаковых типов можно как то?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 19:03
Можно ещё юзать массив-объект. Это тоже сложнее, у меня его нет.

Добавлено через 41 секунду
Цитата Сообщение от Bukharov11 Посмотреть сообщение
А без беззнаковых типов можно как то?
Можно. А зачем?
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
10.06.2012, 19:05  [ТС]
я же говорю препод не зачтет.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.06.2012, 20:31
Хотя, подробное изучение указателей до параметров-массивов не обязательно. Но как минимум синтаксис декларации указателя надо знать. Если тебе сложна адресная арифметрика, то выкидывай и заменяй на индексацию. Проблема ведь была в параметрах? Ну так передачу параметров я тебе показал, а циклы можно переделать.

Добавлено через 2 минуты
Цитата Сообщение от Bukharov11 Посмотреть сообщение
я же говорю препод не зачтет.
А он сможет объяснить, как размер массива, или индекс его элемента может быть отрицательным? Здесь unsigned только за тем, чтоб синтаксически закрепить эту особенность индекса и количества, семантически он здесь ничего не даёт, так как уже есть более строгая проверка на > 0. Можно убрать. Но если short int, то unsigned удвоил бы максимально возможное количество.

Добавлено через 1 час 17 минут
Цитата Сообщение от Bukharov11 Посмотреть сообщение
using namespace std;
и цепляем всё, что там валяется. Ты все члены пространства из файла iostream знаешь досконально? Можешь гарантировать, что ни один не совпадёт с каким нибудь твоим идентификатором? Это ещё одна сложность. А у меня каждый поток и каждый манипулятор цепляется отдельно и не тянет за собой весь iostream. А поэтом можно не знать про cerr, например. Это тоже упрощение: не надо, придумывая идентификатор гадать, с чем он может случайно совпасть. Используемые же члены надо знать так и так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2012, 20:31
Помогаю со студенческими работами здесь

Обмен значениями двух переменных А и В без использования вспомогательной переменной
Сконструировать алгоритм обмена значениями двух переменных А и В без использования вспомогательной переменной

Поменять местами значения двух переменных без использования дополнительной переменной
4. Написать программу, которая меняет местами значения двух переменных без использования дополнительной переменной.

Составьте программу без использования строковых переменных, которая разбивает число n на цифры и печатает их в
Приписать по единице в начало и конец записи числа n.

Инициализация глобальных переменных
Требуется инициализировать 2 массива и 2 переменные, которые используются в 2-х функциях, с клавиатуры, но без передачи их в качестве...

Объявление глобальных переменных
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; void main (int x, int y) { printf (&quot;x=&quot;); scanf_s (&quot;x=&amp;d&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru