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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
#1

Перегружаемые функции - C++

28.04.2010, 20:08. Просмотров 2717. Ответов 30
Метки нет (Все метки)

помогите с программой, и если с можете поясните сами функции, а то совсем в них запуталась, сколько не читала теории. а понять не могу

Прога:
Организовать 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
#include <stdafx.h>
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
//void k(int*, int, int =0);
void k(int *x, int n, int dir=0)
{ 
    cout << "funcion int k((int x[])" << endl;
    return ;
}
//void k(char*, int, int=0);
void k(char *x, int n, int dir=0)
{
    cout << "funcion char k((char x[])" << endl;
    return ;
}
 
int main(void)
{
    int *mas;
    int size;
    k(mas, size, 1);
    mas=new int*[n];
    for (int i=0, i<n, i++) cin >>x[i];
 
    mas=new char*[n];
    for (int i=0, i<n, i++) cin >>x[i];
    delete x;
    return 0;
}
и заготовка подруги, но тут уж больно много ошибок выдает компилятор и понять сложно:
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
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <locale.h>
#include <stdio.h>
#include <string.h>
using namespace std;
void vivod(int num[], int n);
void sort (int *a, int N, int f=0);
void sort (char *n, char x, int N, char s=0);
const int N=10;
int main(void)
{
    int t[10], i;
    for(i=0; i<10; i++);
        vivod (t,10);
        sort(t, N);
        _getch();
    return 0;
}
void vivod (int num[10])
{
    int i, n;
    for(i=0; i<n; i++) printf("%d ", num[i]);
}
void sort (int *a, int N, int f=0)
{   int i, buf;
    for (int pass=1; pass < N; pass++)
        for (i=0; i < N-1; i++)
            if (a[i] > a[i+1]) {
                buf=a[i];
                a[i]=a[i+1];
                a[i+1]=buf;
            }
            cout << endl << "Элементы данных в порядке возрастания" << endl;
            for (i=0; i<N; i++)
                cout << setw(6) << a[i];
            cout << endl;
            printf(
             "%6d\n", a 
                 );
 
        _getch();
 
}
void sort (char *n, char x, int N, char s=0)
{   int i,j;
    printf ("Введите строку:");
    printf ("\n");
    for (i=0;i<N;i++)
        gets(n[i]);
        for (i=(N-1);i>0;i--)
            for(j=i;j<N;j++)
                if (strcmp (n[j],n[j-1])<0)
                {
                    strcpy (x,n[j]);
                    strcpy (n[j],n[j-1]);
                    strcpy (n[j-1],x);
                }
            printf("Отсортированные строки:");
            printf("\n");
            for(i=0;i<N;i++)
                puts(n[i]);
}
буду очень благодарна за любую помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2010, 20:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегружаемые функции (C++):

перегружаемые функции - C++
Есть задание для массивов типа int и double: 1. найти сумму положительных элементов массива 2. произведение элементов, находящихся между...

Перегружаемые функции - C++
Помогите привести в рабочее состояние, а то хз че - не компилиться((( Надо создать 3 перегружаемые функции, которые выделяют память в куче...

Написать перегружаемые функции умножения разного количества параметров - C++
Помогите пожалуйста с задачей ничего не понимаю: Написать перегружаемые функции умножения разного количества параметров: 2,3,4. При...

Создать перегружаемые функции и шаблоны для типов int и double - C++
Создать перегружаемые функции и шаблоны для типов int и double. Передачу параметров в функцию осуществить различными способами: с помощью...

можно ли делать виртуальными перегружаемые операторы? - C++
например так: virtual a&amp; a::operator=(a&amp; b);

Как совместить код, реализующий методы и перегружаемые операции - C++
Есть такое задание::::) Разработать класс «Вектор» – Vektor размерности n . Определить несколько конструкторов, в том числе конструктор...

30
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.04.2010, 23:01 #16
Цитата Сообщение от enari Посмотреть сообщение
Метод Пузырька только для C в С++ его не используют ?
Пузырьковая сортировка она не для конкретного языка, а алгоритм вообще. Язык не причем.
0
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
29.04.2010, 07:36  [ТС] #17
а мжно еще пример сортировки с char
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
29.04.2010, 09:25 #18
Luna17, вот и для массива целых чисел и для массива символов:
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
void Swap(int& l, int& r) {
  int tmp = l;
       l  = r;
       r  = tmp;
}
 
void Swap(char& l, char& r) {
  int tmp = l;
       l  = r;
       r  = tmp;
}
 
void SortExchange(int* arr, int size, int sort_up = 1) {
  for (int i = 1; i < size; ++i) {
    for (int j = n-1; j >= i; --j)
      if (sort_up == 1? arr[j-1] > arr[j] : arr[j-1] < arr[j])
        Swap(arr[j], arr[j-1]);
  }
}
 
void SortExchange(char* arr, int size, int sort_up = 1) {
  for (int i = 1; i < size; ++i) {
    for (int j = n-1; j >= i; --j)
      if (sort_up == 1? arr[j-1] > arr[j] : arr[j-1] < arr[j])
        Swap(arr[j], arr[j-1]);
  }
}
0
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
30.04.2010, 04:03  [ТС] #19
CyBOSSeR, пасибки
enari, пасябки

Добавлено через 1 час 0 минут
вот что получается
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
// m,rjhkgfle.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
void k (int *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
            cout << x[i] << " " ;
        }
        cout << '\n';
}
 
void k (char *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
             cout << x[i] << " " ;
        }
        cout << '\n';
}
 
void Sort(int* x, const int size, int dir = 1) 
{
  for (int i = 1; i < size; ++i) 
{
    for (int j = i-1; j >= i; --j)
    {
      if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j])
        k(x[j], x[j-1]);
    }
  }
}
 
void Sort(char* x, const int size, int dir = 1)
 {
  for (int i = 1; i < size; ++i) 
{
    for (int j = i-1; j >= i; --j)
    {
      if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j])
    
        k(x[j], x[j-1]);
    }
  }
}
 
 
 
int main(void)
{    int stop;
                char *xchar;
                int *xayint;
                const int size = 10;
        xayint = new int [size];
                for (int i=0; i<size; i++)
                {
                 cin >>xayint[i];
                }
                k(xayint,size);
          //    delete [] xayint;  // Удаление динамически выделеного массива
   xchar = new char [size];
                for (int i=0; i<size; i++)
                {
                 cin >>xchar[i];
                }
           //   delete [] kchar;  // Удаление динамически выделеного массива */
           Sort(xayint,size);
           k(xayint,size);
           //k(xchar,size);
 
 
        return 0;
}

ошибки при компиляции


1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(35) : error C2665: k: ни одна из 2 перегрузок не может преобразовать все типы аргументов
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(10): может быть 'void k(int *,const int &)'
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(19): или 'void k(char *,const int &)'
1> при попытке сопоставить список аргументов '(int, int)'
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(48) : error C2665: k: ни одна из 2 перегрузок не может преобразовать все типы аргументов
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(10): может быть 'void k(int *,const int &)'
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(19): или 'void k(char *,const int &)'
1> при попытке сопоставить список аргументов '(char, char)'
1>Журнал построения был сохранен в "file://c:\Users\Вероника\Documents\Visual Studio 2008\Projects\m,rjhkgfle\m,rjhkgfle\Debug\BuildLog.htm"
1>m,rjhkgfle - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

что я сделала не так? и как исправить?

Добавлено через 2 минуты
дубль 2
тож самое ток сортировок больше и ошибок 6
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
// m,rjhkgfle.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
void k (int *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
            cout << x[i] << " " ;
        }
        cout << '\n';
}
 
void k (char *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
             cout << x[i] << " " ;
        }
        cout << '\n';
}
 
 
void Sort(int *x, const int &size,  int dir=0)
{  
    cout << "funcion int k((int x[])" << endl;
    int buff;
                for (int i = 0; i < size; i++)
                {
                 for (int j = i+1; j < size; j++)
                    {
                        if (dir == 0? x[j] <= x[i]) {buff = x[i]; x[i] = x[j]; x[j] = buff;}
                    }
                }
}
 
void Sort(char *x, const int &size, int dir=0)
{
        cout << "funcion char k((char x[]) \n" << endl;         
        char buf;
          for (int i = 1; i < size; i++)
          {
             for (int j = i+1; j >= i; j++)
                 {
                    if (dir == 0? x[j+1] > x[j] : x[j+1] < x[j]) {buf = x[i]; x[i] = x[j]; x[j] = buf;} 
                 }
          }
}
               
 void Sort(int* x, const int &size, int dir = 1) 
{
    cout << "funcion int k((int x[])" << endl;
    int buff;
         for (int i = 1; i < size; ++i) 
            {
                 for (int j = i-1; j >= i; --j)
                 {
                     if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j]) {buff = x[j-1]; x[j-1] = x[j]; x[j] = buff;}
                 {
            }
}
 
void Sort(char* x, const int size, int dir = 1)
 {
  cout << "funcion char k((char x[]) \n" << endl; 
  char buf;
    for (int i = 1; i < size; ++i) 
        {
             for (int j = i-1; j >= i; --j)
             {
                 if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j]) {buff = x[j-1]; x[j-1] = x[j]; x[j] = buff;}
        
        }
}
 
int main(void)
{    int stop;
                char *xchar;
                int *xayint;
                const int size = 10;
        xayint = new int [size];
                for (int i=0; i<size; i++)
                {
                 cin >>xayint[i];
                }
                k(xayint,size);
          //    delete [] xayint;  // Удаление динамически выделеного массива
   xchar = new char [size];
                for (int i=0; i<size; i++)
                {
                 cin >>xchar[i];
                }
           //   delete [] kchar;  // Удаление динамически выделеного массива */
           Sort(xayint,size);
           k(xayint,size);
           //k(xchar,size);
 
 
        return 0;
}
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(37) : error C2143: синтаксическая ошибка: отсутствие "," перед ")"
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(37) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(56) : error C2572: Sort: переопределение параметра по умолчанию: параметр 3
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(29): см. объявление 'Sort'
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(56) : error C2084: функция "void Sort(int *,const int &,int)" уже имеет текст реализации
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(29): см. предыдущее определение 'Sort'
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(69) : error C2601: Sort: недопустимые локальные определения функций
1> c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(60): эта строка содержит '{', которая пока не имеет парной
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(118) : fatal error C1075: конец файла обнаружен ранее, чем левая фигурная скобка '{' в "c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(69)"
1>Журнал построения был сохранен в "file://c:\Users\Вероника\Documents\Visual Studio 2008\Projects\m,rjhkgfle\m,rjhkgfle\Debug\BuildLog.htm"
1>m,rjhkgfle - ошибок 6, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
enari
18 / 18 / 2
Регистрация: 26.04.2010
Сообщений: 35
30.04.2010, 17:02 #20
Не понятно =(

Добавлено через 11 минут
Проверти внимательнее алгоритм что дал вам CyBOSSeR и ваш что вы написали.
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.04.2010, 21:45 #21
Luna17, вот, все работает:
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
void Swap(int& l, int& r) {
  int tmp = l;
  l  = r;
  r  = tmp;
}
 
void Swap(char& l, char& r) {
  int tmp = l;
  l  = r;
  r  = tmp;
}
 
void SortExchange(int* arr, int size, int sort_up = 1) {
  for (int i = 1; i < size; ++i) {
    for (int j = size - 1; j >= i; --j)
      if (sort_up == 1? arr[j - 1] > arr[j] : arr[j-1] < arr[j])
        Swap(arr[j], arr[j - 1]);
  }
}
 
void SortExchange(char* arr, int size, int sort_up = 1) {
  for (int i = 1; i < size; ++i) {
    for (int j = size - 1; j >= i; --j)
      if (sort_up == 1? arr[j-1] > arr[j] : arr[j - 1] < arr[j])
        Swap(arr[j], arr[j - 1]);
  }
}
 
int main()
{
  int int_arr[]    = {5, 1, 4, 6, 3, 3, 6, 7, 8, 9, 0};
  int int_arr_size = sizeof(int_arr) / sizeof(int_arr[0]);
 
  char char_arr[]    = {'b', 'c', 'z', 'c', 'd', 'r'};
  int  char_arr_size = sizeof(char_arr) / sizeof(char_arr[0]);
 
  SortExchange(char_arr, char_arr_size);
  std::copy(char_arr, char_arr + char_arr_size, std::ostream_iterator<char>(std::cout, " "));
  std::cout << std::endl;
 
  SortExchange(int_arr , int_arr_size, 0);
  std::copy(int_arr, int_arr + int_arr_size, std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
 
  return 0;
}
1
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
02.05.2010, 01:56  [ТС] #22
CyBOSSeR, теперь понятно, я чуть позже выложу что у меня получается, т к заголовочную часть пришлось изменять с прихоти преподавательницы

Добавлено через 15 часов 17 минут
CyBOSSeR,
я переделала прогу под твою, типа, но у меня до main все норм а полсе ошибки выдает мож глянуть и показать что надо сделать чо бы норм работала

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
115
116
// m,rjhkgfle.cpp: определяет точку входа для консольного приложения.
//
 
#include <stdafx.h>
#include <stdio.h>
#include <iostream>
#include <string.h> 
 
#include <iomanip>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
void k (int *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
            cout << x[i] << " " ;
        }
        cout << '\n';
}
 
 
void k (char *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
             cout << x[i] << " " ;
        }
        cout << '\n';
}
 
 
void Sort(int *x, const int &size,  int dir=0)
{  
    cout << "funcion int k((int x[])" << endl;
    int buff;
    if (dir == 0)
    {
          for (int i = 0; i < size; i++)
                {
                 for (int j = i+1; j < size; j++)
                    {
                        
                        if (dir == 0? x[j] <= x[j] : x[j+1] < x[j]){buff = x[i]; x[i] = x[j]; x[j] = buff;}
    
 
                 }
                    }
    }
    else (dir == 1);
    {
             for (int i = 1; i < size; ++i) 
            {
                 for (int j = i-1; j >= i; --j)
                 {
                     if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j]){buff = x[i-1]; x[i-1] = x[i]; x[i] = buff;}
                 {
            }
}
         }
    }
 }
 
 
void Sort(char *x, const int &size, int dir=0)
{
        cout << "funcion char k((char x[]) \n" << endl;         
        char buf;
        if (dir == 0)
        {
          for (int i = 1; i < size; i++)
          {
             for (int j = i+1; j >= i; j++)
                 {
                    if (dir == 0? x[j+1] > x[j] : x[j+1] < x[j]){buf = x[i]; x[i] = x[j]; x[j] = buf;} 
                 }
          }
        }
        else (dir == 1);
        {
          char buf;
    for (int i = 1; i < size; ++i) 
        {
             for (int j = i-1; j >= i; --j)
             {
                 if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j]){buf = x[i-1]; x[i-1] = x[i]; x[i] = buf;}
             {
        
        }
}
    }
        }
}
 
int main(void)
{    
 
        int int_x[] = {5, 1, 4, 6, 3, 3, 6, 7, 8, 9, 0};
        int int_x_size =  sizeof(int_x[0]);
    
        char char_x[] = {'b', 'c', 'z', 'c', 'd', 'r'};
        int  char_x_size =  sizeof(char_x[0]);
 
        Sort(char_x, char_x_size );
        std::copy( char_x, char_x + char_x_size, std::ostream_iterator<char>(std::cout, " "));
        std::cout << std::endl;
 
        Sort(int_x , int_x_size, 0);
        std::copy(int_x, int_x + int_x_size, std::ostream_iterator< int >(std::cout, " "));
        std::cout << std::endl;
 
        _getch();
  return 0;
}
Ошибки при компиляции
1>Компиляция...
1>m,rjhkgfle.cpp
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(107) : error C2039: ostream_iterator: не является членом "std"
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(107) : error C2065: ostream_iterator: необъявленный идентификатор
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(107) : error C2062: тип "char" не требуется
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(111) : error C2039: ostream_iterator: не является членом "std"
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(111) : error C2065: ostream_iterator: необъявленный идентификатор
1>c:\users\вероника\documents\visual studio 2008\projects\m,rjhkgfle\m,rjhkgfle\m,rjhkgfle.cpp(111) : error C2062: тип "int" не требуется
1>Журнал построения был сохранен в "file://c:\Users\Вероника\Documents\Visual Studio 2008\Projects\m,rjhkgfle\m,rjhkgfle\Debug\BuildLog.htm"
1>m,rjhkgfle - ошибок 6, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Добавлено через 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
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
115
116
117
118
119
// m,rjhkgfle.cpp: определяет точку входа для консольного приложения.
//
 
#include <stdafx.h>
#include <stdio.h>
#include <iostream>
#include <string.h> 
 
#include <algorithm>
#include <iterator>
 
#include <iomanip>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
void k (int *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
            cout << x[i] << " " ;
        }
        cout << '\n';
}
 
 
void k (char *x , const int &size)
{
        for (int i = 0; i < size; i++)
        {
             cout << x[i] << " " ;
        }
        cout << '\n';
}
 
 
void Sort(int *x, const int &size,  int dir=0)
{  
    cout << "funcion int k((int x[])" << endl;
    int buff;
    if (dir == 0)
    {
          for (int i = 0; i < size; i++)
                {
                 for (int j = i+1; j < size; j++)
                    {
                        
                        if (dir == 0? x[j] <= x[j] : x[j+1] < x[j]){buff = x[i]; x[i] = x[j]; x[j] = buff;}
    
 
                 }
                    }
    }
    else (dir == 1);
    {
             for (int i = 1; i < size; ++i) 
            {
                 for (int j = i-1; j >= i; --j)
                 {
                     if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j]){buff = x[i-1]; x[i-1] = x[i]; x[i] = buff;}
                 {
            }
}
         }
    }
 }
 
 
void Sort(char *x, const int &size, int dir=0)
{
        cout << "funcion char k((char x[]) \n" << endl;         
        char buf;
        if (dir == 0)
        {
          for (int i = 1; i < size; i++)
          {
             for (int j = i+1; j >= i; j++)
                 {
                    if (dir == 0? x[j+1] > x[j] : x[j+1] < x[j]){buf = x[i]; x[i] = x[j]; x[j] = buf;} 
                 }
          }
        }
        else (dir == 1);
        {
          char buf;
    for (int i = 1; i < size; ++i) 
        {
             for (int j = i-1; j >= i; --j)
             {
                 if (dir == 1? x[j-1] > x[j] : x[j-1] < x[j]){buf = x[i-1]; x[i-1] = x[i]; x[i] = buf;}
             {
        
        }
}
    }
        }
}
 
int main(void)
{    
 
        int int_x[] = {5, 1, 4, 6, 3, 3, 6, 7, 8, 9, 0};
        int int_x_size =  sizeof(int_x[0]);
    
        char char_x[] = {'b', 'c', 'z', 'c', 'd', 'r'};
        int  char_x_size =  sizeof(char_x[0]);
 
        Sort(char_x, char_x_size );
        std::copy( char_x, char_x + char_x_size, std::ostream_iterator<char>(std::cout, " "));
        std::cout << std::endl;
 
        Sort(int_x , int_x_size, 0);
        std::copy(int_x, int_x + int_x_size, std::ostream_iterator< int >(std::cout, " "));
        std::cout << std::endl;
 
        _getch();
  return 0;
}
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.05.2010, 02:05 #23
Цитата Сообщение от Luna17 Посмотреть сообщение
C++
1
int int_x_size = *sizeof(int_x[0]);
Luna17, sizeof позволяет получить размер аргумента в байтах. Функции же принимают размер массива в виде количества элементов. Для того чтобы получить количество элементов в массиве необходимо разделить размер массива в байтах на размер элемента массива, т.е.
C++
1
sizeof(arr) / sizeof(arr[0])
Luna17, ничего не переделывай, то что ты переделала - не будет работать, даже если избавится от синтаксических ошибок.
0
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
02.05.2010, 09:57  [ТС] #24
CyBOSSeR, а с тем что у меня вышло уже совсем ничего нельзя сделать? просто желательно исправить о что есть
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.05.2010, 12:22 #25
Цитата Сообщение от Luna17 Посмотреть сообщение
CyBOSSeR, а с тем что у меня вышло уже совсем ничего нельзя сделать?
Только если переписать заново, чем тебя не устраивает работающий вариант?
0
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
02.05.2010, 14:00  [ТС] #26
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Luna17, вот, все работает:
C++
1
2
3
4
5
6
7
8
9
10
  SortExchange(char_arr, char_arr_size);
  std::copy(char_arr, char_arr + char_arr_size, std::ostream_iterator<char>(std::cout, " "));
  std::cout << std::endl;
 
  SortExchange(int_arr , int_arr_size, 0);
  std::copy(int_arr, int_arr + int_arr_size, std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
 
  return 0;
}
тем что я не понимаю вот эту часть, и надо что бы было 4 вызова функции
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.05.2010, 16:33 #27
Luna17, вот вариант попроще, с 4-мя вызовами функции сортировки:
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
#include <iostream>
 
void SortExchange(int* arr, int size, int sort_up = 1) {
  for (int i = 1; i < size; ++i)
    for (int j = size - 1; j >= i; --j)
      if (sort_up == 1? arr[j - 1] > arr[j] : arr[j-1] < arr[j]) {
        int tmp        = arr[j - 1];
            arr[j - 1] = arr[j];
            arr[j]     = tmp;
      }
}
 
void SortExchange(char* arr, int size, int sort_up = 1) {
  for (int i = 1; i < size; ++i) {
    for (int j = size - 1; j >= i; --j)
      if (sort_up == 1? arr[j-1] > arr[j] : arr[j - 1] < arr[j]) {
        char tmp        = arr[j - 1];
             arr[j - 1] = arr[j];
             arr[j]     = tmp;
      }
  }
}
 
int main()
{
  char char_arr[]    = {'b', 'c', 'z', 'c', 'd', 'r'};
  int  char_arr_size = sizeof(char_arr) / sizeof(char_arr[0]);
 
  for (int i = 0; i < char_arr_size; ++i)
    std::cout << char_arr[i] << " ";
  std::cout << std::endl;
 
  SortExchange(char_arr, char_arr_size);
  for (int i = 0; i < char_arr_size; ++i)
    std::cout << char_arr[i] << " ";
  std::cout << std::endl;
 
  SortExchange(char_arr, char_arr_size, 0);
  for (int i = 0; i < char_arr_size; ++i)
    std::cout << char_arr[i] << " ";
  std::cout << std::endl;
 
  int int_arr[]    = {5, 1, 4, 6, 3, 3, 6, 7, 8, 9, 0};
  int int_arr_size = sizeof(int_arr) / sizeof(int_arr[0]);
 
  for (int i = 0; i < int_arr_size; ++i)
    std::cout << int_arr[i] << " ";
  std::cout << std::endl;
 
  SortExchange(int_arr , int_arr_size);
  for (int i = 0; i < int_arr_size; ++i)
    std::cout << int_arr[i] << " ";
  std::cout << std::endl;
 
  SortExchange(int_arr , int_arr_size, 0);
  for (int i = 0; i < int_arr_size; ++i)
    std::cout << int_arr[i] << " ";
  std::cout << std::endl;
 
  return 0;
}
1
Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
02.05.2010, 22:47  [ТС] #28
терь все так, и выводит рез вроде правильно, оч надеюсь, что преподу ничего нового в голову не взбредет,\

у ми то 1 вопрос, для чего мы пишем std и что она делает???
0
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
02.05.2010, 22:56 #29
у ми то 1 вопрос, для чего мы пишем std и что она делает???
Про "Поименованные области" почитай и поймешь что это.
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.05.2010, 23:06 #30
Цитата Сообщение от Luna17 Посмотреть сообщение
у ми то 1 вопрос, для чего мы пишем std и что она делает???
cout, cin входят в состав пространство имен std, поэтому их использование без указания тем или иным образом имени пространства имен не возможно. Подробнее можешь прочитать здесь.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2010, 23:06
Привет! Вот еще темы с ответами:

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

Перегружаемые и виртуальные методы (ошибка) - Delphi
Ребята, выручайте! Программа должна выводить рандомные числа. Возникает ошибка при запуске. unit Unit1; interface uses ...

excel. создать таблицу значение кусочно-непрерывной функции y на интервале [xmin; xmax] с шагом h, для расчета функции y используя логические функции - Delphi

Какое значение возвращают функции (в частности, логические функции) по умолчанию в Лазарус? - Lazarus
Я наткнулся на одну неприятность. До сих пор я считал, что result в функциях по умолчанию равен false (если функция логическая) и 0 (если...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
02.05.2010, 23:06
Ответ Создать тему
Опции темы

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