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

Как определить оператор в С++? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ строки http://www.cyberforum.ru/cpp-beginners/thread323774.html
Юлий Цезарь использовал свой способ шифрования текста. Каждая буква заменялась на следующую по алфавиту через K позиций по кругу. Необходимо по заданной шифровке определить исходный текст. Формат входного файла В первой строке дана шифровка, состоящая из заглавных латинских букв. Во второй строке число K (1 ≤ K ≤ 10).
C++ Конструктор копирование Получил задание от преподавателя написать программу «Поезд» Условия такие программа предлагает ввести с клавиатуры: -Количество поездов; -Количество вагонов для каждого поезда; На основе ведомых данных создается поезда и выводится общая информация о них. Также система должна выдавать следующие отчеты: 1. Поезд в котором ехала наибольшее количество пассажиров. 2. Поезд в котором ехала... http://www.cyberforum.ru/cpp-beginners/thread323770.html
C++ как убрать нули с вещественого числа
Помогите пожалуйста! Есть число double value == 12 650 320. 250 000 Как убрать 0 после дисятичной точки. Заранее благодарен.
Какие книги посоветуете? C++
Что посоветуете для изучения языка? Я пока только начинающий
C++ Игра Лото http://www.cyberforum.ru/cpp-beginners/thread323749.html
Нужно написать программу в консоли в которой основой будет циклы и массивы (желательно что бы была проверка на совпадение между массивами и вы вод на экран чисел которые выдал барабан) + просьба не использовать функции. ;) Добавлено через 10 часов 5 минут up! PLZ HELP!
C++ Дан текст, каждый символ которого может быть... Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +,-,*. 1. Выяснить, встречается ли в данном текста группа букв,заданная пользователем. 2. Подсчитать число и вывести такие группы букв, которые начинаются и кончаются одной и той же буквой. 3.Найти все такие группы Букв, в которые заданная пользователем буква входит указаное число раз. Придумывайте своим... подробнее

Показать сообщение отдельно
barfly
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 14
21.06.2011, 14:06     Как определить оператор в С++?
Программа для сортировки шелла массива данных по ключу.
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
#include <iostream>
 
enum { maxlen = 100, 
       maxn = 100 };
 
struct value {
  char name[maxlen];
};
 
struct key {
  int k;
  value *v;
};
 
int increment(long inc[], long maxn) {
  int p1, p2, p3, s;
  p1 = p2 = p3 = 1;
  s = -1;
  do {
    if (++s % 2) 
      inc[s] = 8*p1 - 6*p2 + 1;
    else {
      inc[s] = 9*p1 - 9*p3 + 1;
      p2 *= 2;
      p3 *= 2;
    }
    p1 *= 2;
  } while(3*inc[s] < maxn);  
  return s > 0 ? --s : 0;
}
 
template<class T>
void shellsort(T a[], long maxn) {
  long inc, i, j, seq[40];
  int s;
  s = increment(seq, maxn);
  while (s >= 0) {
    inc = seq[s--];
    for (i = inc; i < maxn; i++) {
      T temp = a[i];
      for (j = i-inc; (j >= 0) && (a[j] > temp); j -= inc)
        a[j+inc] = a[j];
      a[j+inc] = temp;
    }
  }
}
 
int main() {
  using namespace std;
 
  key k[maxn];
  value v[maxn];
  long n;
  cin >> n;
  for (long i = 0; i != n; ++i)
    k[i].v = v + i;
  for (long i = 0; i != n; ++i) {
    cin >> k[i].k;
    cin.getline(k[i].v->name, maxlen);
  }
  
  shellsort(k, n);
  
  for (long i = 0; i != n; ++i) {
    cout << k[i].k << " " << k[i].v->name << '\n';
  }
}
при компиляции вылезает ошибка:
Bash
1
2
3
4
g++ -std=c++98 -pedantic -Wall tmp.cpp
tmp.cpp: In function ‘void shellsort(T*, long int) [with T = key]’:
tmp.cpp:62:17:   instantiated from here
tmp.cpp:41:21: error: no match for ‘operator>in*(a + ((long unsigned int)(((long unsigned int)j) * 16ul))) > temp’
Я так понимаю надо определить оператор >, то есть написать перед вызовом shellsort что-то типа:
C++
1
2
3
 inline bool operator> (const key& k1.k, const key& k2.k) {
    return k1.k < k2.k;
  }
тогда добавляется еще ошибка:
Bash
1
2
3
4
5
6
tmp.cpp: In function ‘int main()’:
tmp.cpp:62:39: error: expected ‘,’ or ‘...’ before ‘.’ token
tmp.cpp:62:60: error: a function-definition is not allowed here before ‘{’ token
tmp.cpp: In function ‘void shellsort(T*, long int) [with T = key]’:
tmp.cpp:65:17:   instantiated from here
tmp.cpp:41:21: error: no match for ‘operator>in*(a + ((long unsigned int)(((long unsigned int)j) * 16ul))) > temp’
Подскажите как решить проблему, а то я C++ только начал изучать.
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru