Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ArxangelXA
43 / 13 / 0
Регистрация: 20.08.2012
Сообщений: 540
#1

Оформить программу в виде функций - C++

10.11.2013, 14:41. Просмотров 686. Ответов 23
Метки нет (Все метки)

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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(){
    int size,i;
    cout<<"Enter size: ";
    cin>>size;
    char* arr=new char[size];
    for (i=0;i<size;i++){
       cout<<"Enter arr "<<i<<" = ";
       cin>>arr[i];
}
    cout<<"Default array: ";
    for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<"\n";
    insertSort(arr,size);
    cout<<"Sorted array: ";
    for (i=0;i<size;i++)
       cout<<arr[i]<<" ";
       cout<<"\n";
system("pause");
return 0;
 {
    int(a[i])>int(a[i+1]);
    (int) a[i]> (int) a[i+1];
    for(i=1;i<10;i++){  
        for (j=1;j10;j--)
            if((a[i]>a[i])&&(i=j));
            x=a[j];  
        x=a[i];
    }
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 14:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оформить программу в виде функций (C++):

Оформить программу в виде функций - C++
Недавно столкнулся с такой вот задачей: Дана матрица размером M на N, нужно сформировать одномерный массив из максимальных элементов...

Оформить в виде функций программу - C++
Всем привет! Помогите пожалуйста оформить задачу в виде функций. /*В одномерном массиве, состоящем из n вещественных элементов,...

Оформить программу в виде функций обработки массивов (ввод, заполнение, вывод, упорядочение и т.п.) - C++
помогите, пожалуйста, с программой, не могу никак разобраться с функциями, сколько уже отмучалась с ними! вот я тут что-то мутила с...

Оформить в виде функций - C++
Помогите, пожалуйста, оформить пункты задания в виде функций. В одномерном массиве, состоящем из n вещественных элементов, вычислить: ...

Оформить простейшие задачи в виде функций - C++
Ребят помогите пожалуйста с задачками для CodeBlocks. Реализовать задачи 1 и 2 в виде функций выполняемых условно-бесконечном цикле...

Оформить одномерный массив в виде функций - C++
и снова я мучаюсь с функциями:wall: и кажется снова они получились вложенными:gscratch: 1.) вычислить номер максимального по...

23
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 14:43 #2
Нужно написать функцию сортировки массива?
1
ArxangelXA
43 / 13 / 0
Регистрация: 20.08.2012
Сообщений: 540
10.11.2013, 15:19  [ТС] #3
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Нужно написать функцию сортировки массива?
нет(точно не понял) просто эту прогу нужно переделать так что бы допустим ее сортировка была загнана в функцию и от туда бралась. вроде нужно так, если я правильно объясняю.

Вот тут есть как это надо делать(в смысле что я имею в виду) но я не пойму как применить это к моей проге
http://book.mql4.com/ru/basics/functions

Я что то пытался, но не знаю(
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(){
    int size,i;
    cout<<"Enter size: ";
    cin>>size;
    char* arr=new char[size];
    for (i=0;i<size;i++){
       cout<<"Enter arr "<<i<<" = ";
       cin>>arr[i];
}
    cout<<"Default array: ";
    for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<"\n";
    insertSort(arr,size);
    cout<<"Sorted array: ";
    for (i=0;i<size;i++)
       cout<<arr[i]<<" ";
       cout<<"\n";
       otdel ();
system("pause");
return 0;
}
void otdel (char* arr=new char[size])
{int size,i;
    int(arr[i])>int(arr[i+1]);
    (int) arr[i]> (int) arr[i+1];
    for(i=1;i<10;i++){  
        for (j=1;j10;j--)
            if((arr[i]>arr[i])&&(i=j));
            x=arr[j];  
        x=arr[i];
    }
}
Добавлено через 20 минут
Или вот? я даже не знаю, так то работает и так и так, но правильно ли это?
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(){
    int size,i=otdel(b);
    cout<<"Enter size: ";
    cin>>size;
    char* arr=new char[size]=otdel(a);
    for (i=0;i<size;i++){
       cout<<"Enter arr "<<i<<" = ";
       cin>>arr[i];
}
    cout<<"Default array: ";
    for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<"\n";
    cout<<"Sorted array: ";
    for (i=0;i<size;i++)
       cout<<arr[i]<<" ";
       cout<<"\n";
system("pause");
return 0;
}
void otdel (char* a=new char[size], int size,b)
{
    int(a[b])>int(a[b+1]);
    (int) a[b]> (int) a[b+1];
    for(b=1;b<10;b++){  
        for (j=1;j10;j--)
            if((a[b]>a[b])&&(b=j));
            x=a[j];  
        x=a[b];
    }
}
0
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 15:59 #4
Сейчас напишу функцию для сортировки массива. (в качестве параметра будет указатель)

Добавлено через 27 минут
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
#include <iostream>
#include <cstdio>
 
using namespace std;
 
const int numOfElements = 100;
 
void sortArray(char *cp);
 
int main()
{
    char testString[numOfElements];
    gets(testString);
    char *cp = testString;
    sortArray(cp);
 
    cout << "\n" << "New string: " << cp;
    return 0;
}
 
 
void sortArray(char *cp) {
    char middle;
    for(register int i = 0; cp[i]; i++) {
        for(register int j = 0; cp[j]; j++) {
            if(cp[j - 1] > cp[j]) {
                middle = cp[j - 1];
                cp[j - 1] = cp[j];
                cp[j] = middle;
            }
        }
    }
}
1
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
10.11.2013, 16:02 #5
раз тут
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
for(register int j = 0
плюс два тут
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
if(cp[j - 1]...
равно выход за пределы массива (cp[- 1]).
1
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 16:09 #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
раз тутплюс два тутравно выход за пределы массива (cp[- 1]).
Сортировка идет без проблем, C++ не осуществляет проверку за выходы за пределы массивов, если мы попытаемся вывести число, которое не в рамках массива, то получим ошибку, а тут мы ничего не получим.
1
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
10.11.2013, 16:16 #7
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
C++ не осуществляет проверку за выходы за пределы массивов
и это причина, почему твоя программа скомпилируется, запустится и... упадёт.
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
а тут мы ничего не получим.
а тут это число может пройти проверку, и будет произведена попытка обмена cp[-1] и cp[0]
Программа либо упадёт, либо даже если всё обойдётся, из массива пропадёт число cp[0], уехав за его пределы на место cp[-1]

Добавлено через 1 минуту
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
если мы попытаемся вывести число, которое не в рамках массива
а почему именно "вывести"? А записать данные в cp[-1] уже можно безопасно?
1
ArxangelXA
43 / 13 / 0
Регистрация: 20.08.2012
Сообщений: 540
10.11.2013, 16:18  [ТС] #8
Я конечно очень плохо знаю язык, но тут я вообще не понял не единой строки( и она не запускается
Кликните здесь для просмотра всего текста
1>------ Build started: Project: пример, Configuration: Debug Win32 ------
1>Compiling...
1>пример.cpp
1>c:\users\guru\documents\visual studio 2008\projects\пример\пример\пример.cpp(1) : warning C4627: '#include <iostream>': skipped when looking for precompiled header use
1> Add directive to 'stdafx.h' or rebuild precompiled header
1>c:\users\guru\documents\visual studio 2008\projects\пример\пример\пример.cpp(2) : warning C4627: '#include <cstdio>': skipped when looking for precompiled header use
1> Add directive to 'stdafx.h' or rebuild precompiled header
1>c:\users\guru\documents\visual studio 2008\projects\пример\пример\пример.cpp(5) : error C2871: 'std' : a namespace with this name does not exist
1>c:\users\guru\documents\visual studio 2008\projects\пример\пример\пример.cpp(18) : error C2065: 'cout' : undeclared identifier
1>Build log was saved at "file://c:\Users\Guru\Documents\Visual Studio 2008\Projects\пример\пример\Debug\BuildLog.htm"
1>пример - 2 error(s), 2 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


и тут вообще что осталось от моей программы? вообщем я в шоке что и как(((
Я думал загнать определенную часть программы под функцию это будет, проще. что то вроде как в паскале. а тут вообще можно сказать другая программа ?(
0
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 16:31 #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и это причина, почему твоя программа скомпилируется, запустится и... упадёт.
а тут это число может пройти проверку, и будет произведена попытка обмена cp[-1] и cp[0]
Программа либо упадёт, либо даже если всё обойдётся, из массива пропадёт число cp[0], уехав за его пределы на место cp[-1]

Добавлено через 1 минуту

а почему именно "вывести"? А записать данные в cp[-1] уже можно безопасно?
Согласен, сейчас протестим, отпишусь.

Добавлено через 1 минуту
В общем, у меня ничего не рушится. Попробуйте вы и скиньте сюда результаты.

Добавлено через 3 минуты
Вы мой код использовали?
1
ArxangelXA
43 / 13 / 0
Регистрация: 20.08.2012
Сообщений: 540
10.11.2013, 16:36  [ТС] #10
Anton_Kretov,
Добавлено через 3 минуты
Вы мой код использовали?
да
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
10.11.2013, 16:38 #11
Anton_Kretov, Алгоритмы сортировок
а теперь посмотри, что ты за ерунду написал!
1
ArxangelXA
43 / 13 / 0
Регистрация: 20.08.2012
Сообщений: 540
10.11.2013, 16:48  [ТС] #12
Kuzia domovenok, А может вы мне поможете?
мне не нужна такая сортировка. потому что мы на примитивном уровне пока изучаем язык и препод заставляет писать все сортировки и все остальное тупа в лоб(супер дурацкими до примитива способами, просто переборами) а если я использую такую сортировку то он скажет если вы используете стандартные готовые сортировки вы должны их объяснять и понимать. а там не расписаны нюансы(допустим почему отбор места начинается с -1, такого индекса вообще нет так то) сортировка вставкой.

И еще вы можете мне посоветовать что почитать, что бы понимать С++ с нуля без всяких знаний. А то у меня каша в голове.
0
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 16:48 #13
Согласен, тот способ более правильный, но я не вижу ничего плохого в исполнении моего, он также выполняет поставленную задачу без ошибок. Возможно, надо малость изменить вложенный цикл и привести к такому виду:
C++
1
2
3
4
5
6
7
8
9
10
int size = strlen(cp);
for(register int i = 0; i < size; i++) {
for(register int j = size - 1; j >= i; b--) {
if(cp[b - 1] > cp[b]) {
 
middle = cp[b - 1];
cp[b - 1] = cp[b];
cp[b] = middle;
}
}
1
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
10.11.2013, 17:01 #14
Цитата Сообщение от ArxangelXA Посмотреть сообщение
препод заставляет писать все сортировки и все остальное тупа в лоб(супер дурацкими до примитива способами, просто переборами) а если я использую такую сортировку то он скажет если вы используете стандартные готовые сортировки вы должны их объяснять и понимать. а там не расписаны нюансы(допустим почему отбор места начинается с -1, такого индекса вообще нет так то) сортировка вставкой.
и правильно заставляет. Алгоритмы сортировок это самые классические задачи по алгоритмизации. На их примере показывается, как вообще реализуются любые алгоритмы на данном языке программирования.
Цитата Сообщение от ArxangelXA Посмотреть сообщение
Kuzia domovenok, А может вы мне поможете?
мне не очень понятно, ты собрался числа сортировать или какие-то символы? Сортируй лучше числа! (Взято из Алгоритмы сортировок)
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
void insertSort(int* , int ) ;
int main(){
    int size,i;
    cout<<"Enter size: ";
    cin>>size;
    int* arr=new char[size];
    for (i=0;i<size;i++){
       cout<<"Enter arr "<<i<<" = ";
       cin>>arr[i];
    }
    cout<<"Default array: ";
    for (i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<"\n";
    bubbleSort(arr,size);
    cout<<"Sorted array: ";
    for (i=0;i<size;i++)
       cout<<arr[i]<<" ";
    cout<<"\n";
   delete[] arr;
   system("pause");
   return 0;
}
void insertSort(int* a, int size) 
{
    int i, j, tmp;
    for (i = 1; i < size; ++i) // цикл проходов, i - номер прохода
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности 
            a[j + 1] = a[j];    // сдвигаем элемент направо, пока не дошли
        a[j + 1] = tmp; // место найдено, вставить элемент    
    }
}
Добавлено через 3 минуты
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Согласен, тот способ более правильный, но я не вижу ничего плохого в исполнении моего, он также выполняет поставленную задачу без ошибок.
я указал уже на ошибки выше.
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Возможно, надо малость изменить вложенный цикл и привести к такому виду:
C++
1
2
3
4
5
6
7
8
9
int size = strlen(cp);
for(register int i = 0; i < size; i++) {
for(register int j = size - 1; j >= i; b--) {
if(cp[b - 1] > cp[b]) {
middle = cp[b - 1];
cp[b - 1] = cp[b];
cp[b] = middle;
}
}
Тут вообще откуда-то b взялось... Если имелось в виду не b, а j, - то ничего не поменялось. Ошибка та же. При i=0 и j=i выход за пределы
1
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 17:04 #15
Пардон, j.
Ну, не думаю, чтобы Герберт Шилтд написал с ошибками...
0
10.11.2013, 17:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 17:04
Привет! Вот еще темы с ответами:

Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций - C++
Сформировать двоичный файл, распечатать его содержимое. Формирование, печать, добавление и удаление элементов оформить в виде функций....

Оформить в виде отдельных функций введения, просмотр и определение количества чисел масива - C++
Код на c++ Напишите програму, проверяя коректность ввода размера масива. Проверте роботу програмы на консольном примере. Дано...

Оформить в виде функций ввод, просмотр и сумму чисел в непарных столбиках масива - C++
Дан массив m x n. Оформить в виде функций ввод, просмотр и сумму чисел в непарных столбиках масива!

Оформить программу в виде подпрограмм - C++
Программа вставляет введенные элементы после максимального элемента и перед ним #include &lt;iostream.h&gt; #include &lt;math.h&gt; void...


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

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

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