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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
Lifehouse
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 58
#1

Помогите обьяснить что означают эти команды - C++

14.11.2011, 19:06. Просмотров 2731. Ответов 7
Метки нет (Все метки)

Вот задача
Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих максимальное количество одинаковых элементов.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int countSames(int *array, int width) {
  int i;
  int *counters = (int*)malloc(width * sizeof(int));
  // можно функцией memset
  for (i = 0; i < width; ++i) counters[i] = 0;
  for (i = 0; i < width; ++i) ++counters[array[i]];
 
  int result = 0;
  for (i = 0; i < width; ++i)
    if (counters[i] > 1)
      result += counters[i];
 
  free(counters);
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  int height = 7 + rand() % 5;
  int width = 7 + rand() % 5;
  
  int i, j;
  int **matrix = (int **)malloc(height * sizeof(int*));
  
  for (i = 0; i < height; ++i) {
    matrix[i] = (int *)malloc(width *sizeof(int));
    printf("Row %3d:", i + 1);
    for (j = 0; j < width; ++j)
      printf("%3d", matrix[i][j] = rand() % width);
    int same = countSames(matrix[i], width);
    printf(" | %3d same", same);
    printf("\n");
  }
 
  int maxSameRowId = 0;
  int maxSameRowValue = countSames(matrix[maxSameRowId], width);
  for (i = 1; i < height; ++i) {
    int same = countSames(matrix[i], width);
    if (same >= maxSameRowValue) {
      maxSameRowId = i;
      maxSameRowValue = same;
    }
  }
 
  printf("\nMaximum same numbers %d are in row number %d\n",
    maxSameRowValue, maxSameRowId + 1);
 
  for (i = 0; i < height; ++i)
    free(matrix[i]);
  free(matrix);
 
  return 0;
}
что эта звездочка, малок, сайзоф,коунтерс означают
C++
1
int *counters = (int*)malloc(width * sizeof(int));
еще это
C++
1
2
for (i = 0; i < width; ++i) counters[i] = 0;
  for (i = 0; i < width; ++i) ++counters[array[i]];
это
C++
1
int main(int argc, char *argv[])
...
C++
1
srand(time(0));
что эти 2 звездочки означают или к чему ведут...
C++
1
int **matrix = (int **)malloc(height * sizeof(int*));
заранее большое спасибо....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 19:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Помогите обьяснить что означают эти команды (C++):

Что означают эти конструкции? - C++
Вот начал изучать cpp , до этого изучал несколько языков, таких как pawn,php и т.д. Вопросы: 1) Что означают такие конструкции как (тип...

Что означают эти 2 определения? - C++
Компилируемый язык со статической типизацией. Сочетание высокоуровневых и низкоуровневых средств.

Объясните,что означают эти строки. - C++
Списал код из учебника(о представлен ниже).Все работает,нареканий нет.После был анализ этого кода с разжевыванием происходящего,но...

Что означают эти объявления переменных? - C++
Я не знаю как это понимать... В условии задания почему-то тип данных указан только для первой строки, а для остальных нет... там же точки с...

Что означают эти значения красным цветом? - C++
Что означают эти значения?

что означают эти 0x378 или 888 в языке C++? - C++
Привет. Объясните пожалуйста, что означают эти 0x378 или 888 в языке C++? Где можно взглянуть на таблицу этих адресов? Как их...

7
Сыроежка
Заблокирован
14.11.2011, 19:29 #2
Цитата Сообщение от Lifehouse Посмотреть сообщение
что эта звездочка, малок, сайзоф,коунтерс означают
C++
1
int *counters = (int*)malloc(width * sizeof(int));
еще это
C++
1
2
for (i = 0; i < width; ++i) counters[i] = 0;
  for (i = 0; i < width; ++i) ++counters[array[i]];
это
C++
1
int main(int argc, char *argv[])
...
C++
1
srand(time(0));
что эти 2 звездочки означают или к чему ведут...
C++
1
int **matrix = (int **)malloc(height * sizeof(int*));
заранее большое спасибо....
Первая звездочка означает, что переменная counters является указателем на тип int.
Вторая звездочка преобразует значение, возвращаемое функцией malloc, которое имеет тип void *, то есть тип указателя на void в тип указателя на int.
Третья звездочка внутри malloc означает оператор произведения операндов.

Во втором вашем примере я не вижу звездочек. Там есть два знака ++. Они означают увеличение значения переменной на единицу. Если переменная имеет тип указателя, то это означает увеличение значения указателя на размер объекта, на который он указывает. То есть есмли есть указатель int *p, который равен, допустим 0, и есть операция ++p, то значение p станет равным 4, так как это размер объекта типа int на 32-битовых платформах.

В функции main звездочка означает указатель, то есть запись char *argv[] означает массив неизветсной длины из указателей на тип char.

srand(time(0)); это инициализация генератора случайных чисел значением, взятым на основании текущего времени.

int **matrix - это объявление указателя на указатель на тип int
1
Lifehouse
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 58
14.11.2011, 19:31  [ТС] #3
spasibo a vot eto argv shto oznachaet ?
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
14.11.2011, 19:34 #4
Цитата Сообщение от Lifehouse Посмотреть сообщение
spasibo a vot eto argv shto oznachaet ?
Массив параметров, которые передаются программе перед запуском.
1
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 19:35 #5
Аргументы, передавамые в командной строке при запуске.
Например запускаете: "programm.exe 15 aaa"
Тогда в программе можно использовать:
argv[1]=15;
argv[2]=aaa;
1
Lifehouse
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 58
14.11.2011, 19:36  [ТС] #6
ooo teper yasno spasibo bol'shoe
0
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
14.11.2011, 19:46 #7
Цитата Сообщение от Lifehouse Посмотреть сообщение
что эта звездочка, малок, сайзоф,коунтерс означают
Каунтэс (а не коунтерз) - это указатель, видимо на счёткчи, по нему выделяется память, то есть он будет указывать на выделенную память, sizeof измеряет размер в байтах любого типа, или переменной, маллок реально выделяет память, звёздочка говорит о том, что это указатель, а не прямые данные, тип в скобках - оператор приведения типа, тип со звёздочкой - тип указателя на данные того типа, при ком звёздочка, звёздочка при каунтэсе относится к типу этого каунтэса.

Добавлено через 2 минуты
Цитата Сообщение от Сыроежка Посмотреть сообщение
Вторая звездочка преобразует значение, возвращаемое функцией malloc,
Бред. Звёздочка имеет тот же смысл, как и первая и ничего не преобразует. Преобразует оператор приведения типа, весь целиком.

Добавлено через 2 минуты
Цитата Сообщение от Lifehouse Посмотреть сообщение
spasibo a vot eto argv shto oznachaet ?
Думаешь, кто то знает, что такое "спэйсайбоу эй воут эгв чтоу ознэчэйэт"?
1
Сыроежка
Заблокирован
14.11.2011, 20:04 #8
Цитата Сообщение от taras atavin Посмотреть сообщение

Добавлено через 2 минуты
Бред. Звёздочка имеет тот же смысл, как и первая и ничего не преобразует. Преобразует оператор приведения типа, весь целиком.
У меня написано

Вторая звездочка преобразует значение, возвращаемое функцией malloc, которое имеет тип void *, то есть тип указателя на void в тип указателя на int.
Так как вопрос был про звездочки, то я и описал смысл использования звездочек. Если вы не поняли, то это ваши проблемы. У меня как раз и изложен смысл, что один указатель преобразуется к другому указателю.

Не надо демонстрировать, что вы такой "умный". Я отвечал на вопрос в том духе, в котором тот был задан.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2011, 20:04
Привет! Вот еще темы с ответами:

Объясните что делают эти команды - C++
Доброй ночи. Объясните что делает здесь каждая команда/функция Вот код void show_files(const wchar_t * _path, const wchar_t *...

Помогите, что описывает эти программы??? - C++
Помогите, что описывает эти программы??? срочно нужно было 1. For (s=0; i=0; i&lt;n; i++) If (A&gt;0) s+=A; 2. Char *F6(char *p) ...

Что означают команды "fun", "my_max", "my_min" в C++? - C++
Мне нужно защищать программу, а я писал её не сам, и в универе мы эти команды ещё не проходили, и что команды эти означают не знаю,...

Обьяснить что делает программа - C++
Уважаемым товарищи программисты объясните пожалуйста что делает эта программа. Что происходит в цикле ? #include &lt;iostream&gt; ...


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

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

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