Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
1

Разбить программу на 2 функции с++

15.01.2019, 09:59. Просмотров 492. Ответов 7
Метки нет (Все метки)

-----------------------------------------------------------------
Здравствуйте. Имеется программа написанная на с++
Помогите пожалуйста разбить программу на 2 функции.
1. А ещё если можно подскажите как реализовать. Чтоб можно было вводить не только цифры от 1 до 10 но например от 1 до 1000000
2. А если не вводить не одного сетного чтоб программа выводила "нет чётных числе"
------------------------------------------------------------------
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
#include <iostream> 
#include <stdio.h> 
using namespace std; 
int main() 
{ 
 setlocale(LC_ALL, "Russian"); 
 
 int V[10], i, A[10], a, j, k, p; 
 char ch; 
 
a: 
 cout « "Vvedite masiv "; //Ввод масива 
 for (i = 0; i < 10; i++) 
 { 
  cin » a; 
  V[i] = a; 
 } 
 j = k = 0; 
 for (i = 0; i < 10; i++) //Переставляем нечетные цифры 
 { 
  p = i % 2; 
  if (p == 0) 
  { 
   A[j] = V[i]; 
   j++; 
   k++; 
   V[i] = 0; 
  } 
 } 
 for (i = 0; i < 10; i++) //Переставляем четные цифры 
 { 
  if (V[i] != 0) 
  { 
   A[k] = V[i]; 
   k++; 
  } 
 } 
 for (i = 0; i < 10; i++)cout « A[i] « " "; //Выводим 
 //return 0; 
system("pause"); 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2019, 09:59
Ответы с готовыми решениями:

Разбить программу на функции
объясните, пожалуйста, как эту программу разбить на три функции: ввод, обработка, вывод. глобальные...

Разбить программу на функции
Помогите пожалуйста разбить программу на функции. Надо чтобы были функции ввода, вывода и работы с...

Разбить программу на функции
Помогите пожалуйста разбить пограмму на три функции: ввод, решение и вывод.Как ни пробую, всё...

Разбить программу на функции
Помогите пожалуйста. Нужно разбить программу на функции. #include &lt;iostream&gt; #include...

7
440 / 328 / 171
Регистрация: 01.07.2015
Сообщений: 1,162
15.01.2019, 17:33 2
Цитата Сообщение от Denis1327 Посмотреть сообщение
Помогите пожалуйста разбить программу на 2 функции.
Тот же самый код просто функция будет принимать массив:

C++
1
2
3
4
5
6
7
8
9
void cheto(int*a , int n) {}
 
…
 
int main() {
  int a[10];
 
  cheto(a, 10);
}

Цитата Сообщение от Denis1327 Посмотреть сообщение
А ещё если можно подскажите как реализовать. Чтоб можно было вводить не только цифры от 1 до 10 но например от 1 до 1000000
Чтобы подсказать, как реализовать, нужно понять, что программа делает. Судя по комментариям, что-то переставляет, и что отсюда следует?


Цитата Сообщение от Denis1327 Посмотреть сообщение
А если не вводить не одного сетного чтоб программа выводила "нет чётных числе"
Пройтись по массиву в начале, проверяя нахождение в нем нечетных, и вывести соответствующее сообщение
0
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
15.01.2019, 18:12  [ТС] 3
Я вот так сделал. Но преполу опять не понравилось...
Сказал нужно уменьшить ее.
Типо должно быть всего 3 типо условий...

------------------
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
#include "pch.h" 
#include <iostream> 
#include <stdio.h> 
 
using namespace std; 
 
int work(int &j, int &k, int &p, int *A, int *V); // обьявляем переменые 
 
// главная функция программы 
int main() 
{ 
 setlocale(LC_ALL, "Russian"); 
 
 int V[10], i, A[100], a; //целочисленный тип данных 
 int j, k, p; 
 cout « "Введите массив: "; //Ввод масива 
 for (i = 0; i < 10; i++) 
 { 
  cin » a; 
  V[i] = a; 
 } 
 
 work(j, k, p, A, V); //Вызов пользовательской фукции 
 
 for (i = 0; i < 10; i++); 
 cout « A[i] « " "; //Выводим 
 cout « endl; 
 system("pause"); 
} 
 
// аргумент передачи по ссылки 
int work(int &j, int &k, int &p, int *A, int *V) 
{ 
  
 j = k = 0; 
 
 for (int i = 0; i < 10; i++) //Переставляем нечетные цифры 
 { 
  p = i % 2; 
  if (p == 0) 
  { 
   A[j] = V[i]; 
   j++; 
   k++; 
   V[i] = 0; 
  } 
 } 
 for (int i = 0; i < 10; i++) //Переставляем четные цифры 
 { 
  if (V[i] != 0) 
  { 
   A[k] = V[i]; 
   k++; 
  } 
 } 
 return 0; 
}
===================
0
440 / 328 / 171
Регистрация: 01.07.2015
Сообщений: 1,162
15.01.2019, 18:14 4
Научитесь выделять код тегами, иначе невозможно ни копировать, ни читать


Цитата Сообщение от Denis1327 Посмотреть сообщение
Сказал нужно уменьшить ее.
Как кто-то поймет, как можно уменьшить написанный код, не зная задания или хотя бы того, что делает приложенный код?
0
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
15.01.2019, 18:26  [ТС] 5
Извините пожалуйста. Виноват.
-
ЗАДАНИЕ:
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях. Типы данных – целый, вещественный, символьный.
0
440 / 328 / 171
Регистрация: 01.07.2015
Сообщений: 1,162
15.01.2019, 20:35 6
Цитата Сообщение от Denis1327 Посмотреть сообщение
ЗАДАНИЕ:
Можно просто пробежаться два раза по массиву:

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
#include <iostream>
#include <iterator>
 
using namespace std;
 
void work(int* a, int* b, int n, int& size) {
  for (int i = 0; i < n; ++i)
    cin >> a[i];
 
  for (int j = 1; j < n; j += 2)
    b[size++] = a[j];
 
  for (int j = 0; j < n; j += 2)
    b[size++] = a[j];
}
 
int main() {
  int n;
  cin >> n;
 
  int* a = new int[n];
  int* b = new int[n];
 
  int size = 0;
 
  work(a, b, n, size);
 
  copy(b, b + size, ostream_iterator<int>(cout, " "));
}
0
313 / 255 / 136
Регистрация: 08.04.2013
Сообщений: 1,116
15.01.2019, 21:25 7
при желании еще от хлама можно наверное почистить в вашем стиле
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
#include <iostream>
#include <stdio.h>
using namespace std;
int work( int *A, int *V); 
 
int main()
{
setlocale(LC_ALL, "Russian");
 
int V[10]{}, A[10] {};
 
cout << "Введите массив: ";    
for (int i = 0; i < 10; i++)
cin >> V[i] ;                   
 
work( A, V);                    
 
for ( int i = 0; i < 10; i++)
cout << A[i] << " ";            
system("pause");
}
 
int work( int *A, int *V)
{
int j = 0;
for (int i = 0; i < 10; i++)        
if (!(i%2)) A[j++] = V[i];
for (int i = 0; i < 10; i++)        
if (i%2)  A[j++] = V[i];
 
return 0;
}
Добавлено через 43 минуты
вернее всего требуется вот это , т.к в задании написано преобразовать массив а не создавать новый
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
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
setlocale(LC_ALL, "Russian");
 
int V[10];
 
cout << "Введите массив: ";    
for (int i = 0; i < 10; i++)
cin >> V[i] ;                   
for (int i = 0; i < 5; i++,i++) {
 
 int temp = V[i];
  V[i]  = V[i+5];
  V[i+5]=temp;
}       
 
for ( int i = 0; i < 10; i++)
cout << V[i] << " ";            
system("pause");
}
0
4661 / 3171 / 1921
Регистрация: 18.12.2017
Сообщений: 10,121
15.01.2019, 22:01 8
Цитата Сообщение от Denis1327 Посмотреть сообщение
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях. Типы данных – целый, вещественный, символьный.
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
#include <iostream> 
using namespace std;
 
template <typename T>
void Set (T* x, int n)
{
    cout <<"Enter "<<n<<" elements:\n"; 
    for (int i = 0; i < n; i++)      
    cin >>x[i];
}
 
template <typename T>
void Change (T* x, int n)
{
    int k=0;
    for (int i = 0; i < n; i+=2)       
       {
            for (int j = i; j > k; j--)
            swap(x[j],x[j-1]);
            k++;
        }
} 
        
template <typename T>
void Print (T* x, int n)
{
    for (int i = 0; i < n; i++)
        cout << x[i] << " ";
    cout << "\n";
} 
 
int main() 
{
    int n, p;
    cout <<"n="; cin >> n;  
  
    cout <<"Make a choice: 1 - int; 2 - double; 3 - char: ";
    cin >>p;
    switch (p) 
    {
       case 1: 
       {
       int* a = new int[n];
       Set(a,n);
       Change(a,n);
       Print(a,n);
       delete[]a;
       break;
       }
       case 2: 
       {  
       double * b = new double[n];   
       Set(b,n);
       Change(b,n);
       Print(b,n);
       delete[]b;
       break;
       }
       case 3: 
       {
       char* c = new char[n];
       Set(c,n);
       Change(c,n);
       Print(c,n);
       delete[]c;
       break;
       }    
       default: 
       cout << "ENTER ERROR\n";
    }   
system("pause");
return 0;
}
Цитата Сообщение от Denis1327 Посмотреть сообщение
Помогите пожалуйста разбить программу на 2 функции
лучше сделать 4 функции - основная (main), ввод (Set), обмен значений местами (Change) и вывод (Print), но можно оставить и 2, если это принципиально.
Цитата Сообщение от Denis1327 Посмотреть сообщение
А если не вводить не одного сетного чтоб программа выводила "нет чётных числе"
прочитайте условие задачи и поймите что это Вам не нужно - у Вас не элементы чётные, а позиции (первый элемент на нечётной позиции, второй на чётной и т.д.)
Цитата Сообщение от Denis1327 Посмотреть сообщение
Типо должно быть всего 3 типо условий...
правильно говорит - для каждого типа (int, double, char) по условию. или по case.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2019, 22:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Разбить программу на функции
Как эту задачу разбить на функции? #include&lt;iostream&gt; #include&lt;iomanip&gt; #include&lt;cstdio&gt;...

Разбить программу на функции
Нужно разбить программу на функции: // Структура индив.cpp: определяет точку входа для...

Разбить программу на функции
Есть программа, но весь код записан в main. Нужно код разбить на 3 функции. Тоесть первая функция...

Помогите разбить программу на функции
Здравствуйте помоги пожалуйста разбить &quot;программу&quot; на функции. Вот оригинал static void...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.