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

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

10.06.2012, 17:16. Показов 1355. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru