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

Прокомментируйте пожалуйста - C++

Восстановить пароль Регистрация
 
Karfa
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 27
10.09.2013, 23:29     Прокомментируйте пожалуйста #1
Не до конца понимаю код программы. Прошу дать комментарии к коду.

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
#include "stdafx.h"
#include <iostream>
#include<math.h>
using namespace std;
 
int main()
{
    const int max = 4;
    int digits1[max] = {1, 2, 3, 4};
    int digits2[max] = {3, 4, 1, 2};
    int * p;
    int str, stolb;
    int i, j, k;
    cout << "Enter str: ";
    cin >> str;
    cout << "Enter stolb: ";
    cin >> stolb;
    int ** matrica = new int * [str]; 
    for(int i = 0; i < str; ++i)
    {    
    matrica[i] = new int[stolb];
    }
    for(int i = 0; i < str; ++i)
    {
        k = 0;
        p = i % 2 ? digits2 : digits1;
        for(int j = 0; j < stolb; ++j)
        {  
            matrica[i][j] = p[k++];
            if(k > max - 1)
         {
                k = 0;
         }
        }
     }
     for(int i = 0; i < str; ++i)
     {
        for(int j = 0; j < stolb; ++j)
        {
            cout << matrica[i][j] << " ";
        }
        cout << "\n";
      }
     for(int i = 0; i < str; ++i)
     {   
      delete [] matrica[i]; 
     }
     delete [] matrica;
    
     return 0; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
10.09.2013, 23:38     Прокомментируйте пожалуйста #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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include <iostream>
#include<math.h>
using namespace std;
 
int main()
{
    const int max = 4;                          // константа
    int digits1[max] = {1, 2, 3, 4};            // массив digits1 из 4 элементов, каждый элемент - целое число (int)
    int digits2[max] = {3, 4, 1, 2};            // почти то же самое
    int * p;                                    // указатель на int
    int str, stolb;                             // две переменные целого типа
    int i, j, k;                                // ...
    cout << "Enter str: ";                      // запрос на ввод целого числа
    cin >> str;                                 // ввод целого числа
    cout << "Enter stolb: ";                    // ...
    cin >> stolb;                               // ...
    int ** matrica = new int * [str];           // matrica - указатель на указатель. динамическое выделение массива указателей
    for(int i = 0; i < str; ++i)                // цикл
    {    
    matrica[i] = new int[stolb];                // то же самое
    }
    for(int i = 0; i < str; ++i)
    {
        k = 0;
        p = i % 2 ? digits2 : digits1;
        for(int j = 0; j < stolb; ++j)
        {  
            matrica[i][j] = p[k++];
            if(k > max - 1)
         {
                k = 0;
         }
        }
     }
     for(int i = 0; i < str; ++i)
     {
        for(int j = 0; j < stolb; ++j)
        {
            cout << matrica[i][j] << " ";
        }
        cout << "\n";
      }
     for(int i = 0; i < str; ++i)
     {   
      delete [] matrica[i]; 
     }
     delete [] matrica;
    
     return 0; 
}
Karfa
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 27
10.09.2013, 23:41  [ТС]     Прокомментируйте пожалуйста #3
Спасибо. Это то понятно. Интересуют блоки циклов. Кто может комментните.
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
10.09.2013, 23:50     Прокомментируйте пожалуйста #4
Коль понятно, чего сам не прокомментировал? Мало приятного тратить свое время, помогать и получать в ответ : "это я знаю, это понятно, я разобрался, мне надо другое..."
Jack Wade
61 / 34 / 6
Регистрация: 24.02.2013
Сообщений: 250
11.09.2013, 01:15     Прокомментируйте пожалуйста #5
Кликните здесь для просмотра всего текста

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
#include "stdafx.h"
#include <iostream>//Подключение библиотеки input-output stream(std::cout, std::cin и т.д.)
#include<math.h>//Подключение библиотеки математических функций(например sin, cos, tan и т.д.)
using namespace std;//Вообще, using namespace - использование пространства имён... или, использование идентификатора std(дабы не писать каждый раз std::cin, std::cout, а сразу, cout, cin и т.д.)
 
//Главная функция
int main()
{
    const int max = 4;//Константа
    int digits1[max] = {1, 2, 3, 4};//Целочисленный массив из 4-х элементов, которые описаны в {---}
    int digits2[max] = {3, 4, 1, 2};//...
    int * p;//Переменная, являющаяся указателем на int
    int str, stolb;//Целочисленные переменные
    int i, j, k;//...
    cout << "Enter str: ";//Вывод на экран сообщения о том, что вводится в данный момент
    cin >> str;//Получение из консоли значения в переменную str
    cout << "Enter stolb: ";//...
    cin >> stolb;//...
    int ** matrica = new int * [str];//Объявление двухмерного динамического массива и объявление, сразу же, размерность массива указателей(т.е. данный массив является массивом указателей на указатели)
    for(int i = 0; i < str; ++i)//Цикл от 1-го числа до того, которое пользователь не ввёл в переменную str
//Циклы в C++ начинаются с нуля, по этому и объявлено, что цикл от 0 до тех пор, пока меньше str.
/Циклическая переменная i с каждым проходом будет увеличиваться на единицу(++i/i++)
    {    
    matrica[i] = new int[stolb];//Выделение памяти под новый столбец матрицы
//грубо говоря-изначально было задано кол-свто элементов строки, теперь же, идёт объявление кол-ство элементов в столбце(вспомните, как объявляются обычные матрицы)
    }
    for(int i = 0; i < str; ++i)//...
    {
        k = 0;//... думаю-вопросов быть не должно...
        p = i % 2 ? digits2 : digits1;//а вот тут, я не совсем понял... Может быть, получение указателей на элементы массивов digits2 и digits1... честно-не могу сказать...
//по моему-проще было бы тогда использовать уж 1 массив, но с размерностью в 8 элементов(судя по программе, если я правильно её понял...)...
        for(int j = 0; j < stolb; ++j)//...
        {  
            matrica[i][j] = p[k++];//Объявление значения элемента матрицы, как p[k+1 - ый]
            if(k > max - 1)//Идёт проверка, если k уже больше пред-последнего элемента p, тогда в элемент матрицы будет заносится 1-й элемент(опять же, счёт начинается с нуля)
         {
                k = 0;//...
         }
        }
     }
     for(int i = 0; i < str; ++i)//...
     {
        for(int j = 0; j < stolb; ++j)//...
        {
            cout << matrica[i][j] << " ";//Вывод на экран значение каждого элемента матрицы
        }
        cout << "\n";//Переход на след. строку. Однако, я бы лучше написал так: cout<<endl(end_line)
      }
     for(int i = 0; i < str; ++i)//...
     {   
      delete [] matrica[i];//Удаление из памяти i-й столбец 
     }
     delete [] matrica;//Удаление исходной строки(удаление массива указателей на указатели)
    
     return 0;//... 
}
Yandex
Объявления
11.09.2013, 01:15     Прокомментируйте пожалуйста
Ответ Создать тему
Опции темы

Текущее время: 14:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru