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

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

10.06.2012, 17:16. Показов 1377. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru