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

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

Восстановить пароль Регистрация
 
 
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
10.11.2013, 14:41     Оформить программу в виде функций #1
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];
    }
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 14:43     Оформить программу в виде функций #2
Нужно написать функцию сортировки массива?
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
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];
    }
}
Anton_Kretov
 Аватар для 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;
            }
        }
    }
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2013, 16:02     Оформить программу в виде функций #5
раз тут
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
for(register int j = 0
плюс два тут
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
if(cp[j - 1]...
равно выход за пределы массива (cp[- 1]).
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 16:09     Оформить программу в виде функций #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
раз тутплюс два тутравно выход за пределы массива (cp[- 1]).
Сортировка идет без проблем, C++ не осуществляет проверку за выходы за пределы массивов, если мы попытаемся вывести число, которое не в рамках массива, то получим ошибку, а тут мы ничего не получим.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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] уже можно безопасно?
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
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 ==========


и тут вообще что осталось от моей программы? вообщем я в шоке что и как(((
Я думал загнать определенную часть программы под функцию это будет, проще. что то вроде как в паскале. а тут вообще можно сказать другая программа ?(
Anton_Kretov
 Аватар для 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 минуты
Вы мой код использовали?
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
10.11.2013, 16:36  [ТС]     Оформить программу в виде функций #10
Anton_Kretov,
Добавлено через 3 минуты
Вы мой код использовали?
да
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2013, 16:38     Оформить программу в виде функций #11
Anton_Kretov, Алгоритмы сортировок
а теперь посмотри, что ты за ерунду написал!
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
10.11.2013, 16:48  [ТС]     Оформить программу в виде функций #12
Kuzia domovenok, А может вы мне поможете?
мне не нужна такая сортировка. потому что мы на примитивном уровне пока изучаем язык и препод заставляет писать все сортировки и все остальное тупа в лоб(супер дурацкими до примитива способами, просто переборами) а если я использую такую сортировку то он скажет если вы используете стандартные готовые сортировки вы должны их объяснять и понимать. а там не расписаны нюансы(допустим почему отбор места начинается с -1, такого индекса вообще нет так то) сортировка вставкой.

И еще вы можете мне посоветовать что почитать, что бы понимать С++ с нуля без всяких знаний. А то у меня каша в голове.
Anton_Kretov
 Аватар для 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;
}
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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 выход за пределы
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 17:04     Оформить программу в виде функций #15
Пардон, j.
Ну, не думаю, чтобы Герберт Шилтд написал с ошибками...
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2013, 17:04     Оформить программу в виде функций #16
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
if(cp[j - 1] > cp[j]) {
возможно, исправило бы ошибку
C++
1
if(cp[j] > cp[j+1])
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
10.11.2013, 17:05  [ТС]     Оформить программу в виде функций #17
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и правильно заставляет. Алгоритмы сортировок это самые классические задачи по алгоритмизации. На их примере показывается, как вообще реализуются любые алгоритмы на данном языке программирования.
Я согласен, но понять ни как не могу. пытался решать, но как это в код переводить, вообще не получается((

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
мне не очень понятно, ты собрался числа сортировать или какие-то символы? Сортируй лучше числа!
мне нужно только символы, это было в прошлом заданий

А где в этой программе функция? insertSort?

А в сортировке вот на этом шаге
C++
1
for (j = i - 1;
если подставить 0, то поиск начинается с -1 индекса, а у нас такого даже нет
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2013, 17:08     Оформить программу в виде функций #18
Цитата Сообщение от ArxangelXA Посмотреть сообщение
А в сортировке вот на этом шаге
Код C++
1
for (j = i - 1;
если подставить 0, то поиск начинается с -1 индекса, а у нас такого даже нет
а зачем подставлять ноль? Как раз в этом случае i больше или равно 1 ==> i-1 не меньше нуля
ArxangelXA
14 / 14 / 0
Регистрация: 20.08.2012
Сообщений: 431
10.11.2013, 17:11  [ТС]     Оформить программу в виде функций #19
Kuzia domovenok,
ладно это понятно.

А про функцию?

И почему то выдает ошибку
Кликните здесь для просмотра всего текста
1>------ Build started: Project: апр, Configuration: Debug Win32 ------
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>апр.cpp
1>c:\users\guru\documents\visual studio 2008\projects\апр\апр\апр.cpp(10) : error C2440: 'initializing' : cannot convert from 'char *' to 'int *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\guru\documents\visual studio 2008\projects\апр\апр\апр.cpp(19) : error C3861: 'bubbleSort': identifier not found
1>Build log was saved at "file://c:\Users\Guru\Documents\Visual Studio 2008\Projects\апр\апр\Debug\BuildLog.htm"
1>апр - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 17:16     Оформить программу в виде функций
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
10.11.2013, 17:16     Оформить программу в виде функций #20
Прототип не указан, это первое, второе - где-то у вас неверное преобразование. Как я понял, Kuzia domovenok, дал вам функцию, но к коду он ее не "подключил", думаю, вы сами справитесь.
Yandex
Объявления
10.11.2013, 17:16     Оформить программу в виде функций
Ответ Создать тему
Опции темы

Текущее время: 17:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru