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

Указатели на объекты в массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти произведение элементов в тех строках матрицы, которые не содержат отрицательных элементов http://www.cyberforum.ru/cpp-beginners/thread1252404.html
Есть целочисленная квадратная матрица, где размерность и элементы вводятся с клавы#include <iostream> #include <math.h> #include <STDLIB.H> using namespace std; int main() { int n; int a; cout << "N = "; cin >> n;
C++ Двумерный массив заполняется одним и тем же числом где ошибка? массив заполняется одним и тем же числом. #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; const int SEET = 18, SPACE = 36, O_SPACE = 18; http://www.cyberforum.ru/cpp-beginners/thread1252392.html
Если курсор изменил положение, делать действие C++
Если курсор перемещается влево, то нажать ЛКМ, а если впрао, то ПКМ. Можно ли так?
C++ Сортировка разделением: Вычислить среднее арифметическое всех элементов массива
Изучаю сортировки, столкнулся с задачей : Сортировка разделением. Способ разделения: вычислить среднее арифметическое всех элементов массива и относительно этого значения разбить массив на две части (с ис-пользованием вспомогательных массивов). Получилось только реализовать сортировку через центральный элемент массива(сдвиги относительно него). #include "stdafx.h" #include <windows.h>...
C++ Числовой массив заполнить случайными числами и распечатать столбиком http://www.cyberforum.ru/cpp-beginners/thread1252342.html
Помогите пожалуйста! Создаем числовой массив. Заполнить случайными числами в диапазоне от -10 до 10. Распечатать столбиком
C++ Как правильно подключить библиотеку SDL Здравствуйте, подскажите, пожалуйста, как правильно подключить библиотеку SDL. Я пользуюсь компилятором Code::Blocks. При подключении SDL появляется ошибка: undefined reference to `WinMain@16' Скажите, пожалуйста, как это исправить. подробнее

Показать сообщение отдельно
Gygocopter
10 / 10 / 5
Регистрация: 05.02.2014
Сообщений: 124
07.09.2014, 16:54     Указатели на объекты в массиве
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>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
class person            // некоторый человек
{
  protected:
    string name;        // имя
  public:
    void setName ( )    // установка имени
      { cout << "Введите имя: " cin >> name; }
    void printName ( )  // показ имени
      { cout << endl << name; }
    string getName ( )  // получение имени
      { return name; }
};
///////////////////////////////////////////////////////////
int main ( )
{
  void bsort ( person**, int ); // прототип функции
  person* persPtr [ 100 ];      // массив указателей на person
  int n = 0;                    // количество элементов в массиве
  char choice;                  // переменная для ввода символа
 
  do
  {
    persPtr [ n ] = new person;       // создаем новый объект
    persPtr [ n ]->setName ( );       // вводим имя
    n++;                              // увеличиваем количество
    cout << "Продолжаем ввод (д/н)?"; // спрашиваем, закончен ли ввод
    cin >> choice;
  }
  while ( choice == 'д' );
 
  cout << "\nНеотсортированный список:";
  for ( int j = 0; j < n; j++ ) // покажем неотсортированный список
    persPtr [ j ]->printName ( );
 
  bsort ( persPtr, n );         // отсортируем указатели
 
  cout << "\nОтсортированный список:";
  for ( j = 0; j < n; j++ )     // покажем отсортированный список
    persPtr [ j ]->printName ( );
  cout << endl;
 
  return 0;
}
///////////////////////////////////////////////////////////
void bsort ( person** pp, int n )
{
  void order ( person**, person** ); // прототип функции
  int j, k;                          // переменные для циклов
 
  for ( j = 0; j < n – 1; j++ )      // внешний цикл
    for ( k = j + 1; k < n; k++ )    // внутренний цикл
      order ( pp + j, pp + k );      // сортируем два элемента
}
///////////////////////////////////////////////////////////
void order ( person** pp1, person** pp2 )
{
  if( (*pp1)->getName ( ) > (*pp2)->getName ( ) ) // если первая строка больше второй,
  {
    person* tempptr = *pp1; // меняем их местами
    *pp1 = *pp2;
    *pp2 = tempptr;
  }
}
Почему
C++
1
void order ( person** pp1, person** pp2 )
, а не
C++
1
void order ( person*** pp1, person*** pp2 )
, ведь передаем указатель на указатель **
C++
1
      order ( pp + j, pp + k );
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru