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

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

Войти
Регистрация
Восстановить пароль
 
Klowanza
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 11
#1

Задача на указатели.Указатель на указатель. - C++

02.12.2011, 00:29. Просмотров 943. Ответов 2
Метки нет (Все метки)

Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали равны 0, а каждый элемент, не принадлежащий главной диагонали, равен 2, 1 или 0 (число очков набранных в игре: 2 – выигрыш, 1 – ничья, 0 – проигрыш).
а) найти число команд, имеющих больше побед, чем поражений;
б) определить номера команд, прошедших чемпионат без поражений;
в) выяснить, имеется ли хотя бы одна команда, выигравшая более половины игр. Память под массивы отводить динамически.
Нужна помощь. Пункт Б.
При выполнении использовать только указатель на указатель (те динам. матрицу). Без структур,
рандомов, без функций и строк.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 00:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задача на указатели.Указатель на указатель. (C++):

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Указатели на указатель - C++
#include <iostream> void print(char** p) { while(*p) std::cout << *p++ << '\n'; //ps а потом ps ? } void main() ...

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

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; void sort_1(const...

Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель - C++
Всем привет, встретил в книге такой пример добавления узла в дерево: typedef struct tree { int data; tree *left, *right,...

2
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
02.12.2011, 14:17 #2
Klowanza, а какие проблемы с пунктом б) ?
Цитата Сообщение от Klowanza Посмотреть сообщение
Нужна помощь. Пункт Б.
Считаете, в какой строке нулей не более 1 (т.к. по диагонале один 0 точно будет) и выводите номера этих строк...
1
lemegeton
2932 / 1361 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
02.12.2011, 16:12 #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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
enum {
  LOOSE = 0,
  DRAW = 1,
  WIN = 2
};
 
void fillRandom(int **array, int size) {
  for (int i = 0; i < size; ++i)
    for (int j = i + 1; j < size; ++j) {
      array[i][j] = rand() % 3;
      if (array[i][j] == LOOSE)
        array[j][i] = WIN;
      else if (array[i][j] == WIN)
        array[j][i] = LOOSE;
      else
        array[j][i] = array[i][j];
    }
  for (int i = 0; i < size; ++i)
    array[i][i] = 0;
}
 
void printArray(int **array, int size) {
  for (int i = 0; i < size; ++i) {
    for (int j = 0; j < size; ++j)
      std::cout << array[i][j] << " ";
    std::cout << std::endl;
  }
}
 
int countValueForRow(int **array, int size, int row, int value) {
  int result = 0;
  for (int i = 0; i < size; ++i)
    if (row != i && array[row][i] == value)
      ++result;
  return result;
}
 
int countWinners(int **array, int size) {
  int result = 0;
  for (int i = 0; i < size; ++i) {
    int numberOfWins = countValueForRow(array, size, i, WIN);
    int numberOfLooses = countValueForRow(array, size, i, LOOSE);
    if (numberOfWins > numberOfLooses)
      result++;
  }
  return result;
}
 
int firstMostWinner(int **array, int size) {
  for (int i = 0; i < size; ++i)
    if (countValueForRow(array, size, i, WIN) > (size - 1) / 2)
      return i;
  return -1;
}
 
void printNumberOfWinners(int **array, int size) {
  std::cout << "Number of winners: " << countWinners(array, size) << std::endl;
}
 
void printFlawlessWinners(int **array, int size) {
  std::cout << "Flawless winners: ";
  for (int i = 0; i < size; ++i)
    if (countValueForRow(array, size, i, LOOSE) == 0)
      std::cout << i << " ";
  std::cout << std::endl;
}
 
void printHasMostWinner(int **array, int size) {
  std::cout << "Have most winner: " <<
    ((firstMostWinner(array, size) > -1) ? "yes" : "no") << std::endl;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  int size = 5 + rand() % 3;
  
  int **array = new int*[size];
  for (int i = 0; i < size; ++i)
    array[i] = new int[size];
    
  fillRandom(array, size);
  printArray(array, size);
 
  printNumberOfWinners(array, size);
  printFlawlessWinners(array, size);
  printHasMostWinner(array, size);
 
  for (int i = 0; i < size; ++i)
    delete [] array[i];
  delete [] array;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 16:12
Привет! Вот еще темы с ответами:

Функция принимает указатель на void и возвращает указатель на int - C++
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Указатель на указатель, функции для создания новых массивов? - C++
Всем привет! У меня в коде есть несколько новых массивов, чтобы не повторяться я создам функцию которая будет выделять память под новые...

Приведение любого двумерного массива к типу указатель на указатель - C++
Допустим, есть несколько массивов int arr1; int arr2; int arr3; Какое преобразование нужно сделать, чтобы подобные присвоения...

Объяснить работу функции, возвращающей указатель на указатель на char - C++
Добрый день! Сможете объяснить что означает запись char **InputFile(int &amp;strings);? Почему именно двойное **? Буду очень благодарна...


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

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

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