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

Прокомментировать код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление объема цилиндра http://www.cyberforum.ru/cpp-beginners/thread593029.html
// x.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // Вычисление объема цилиндра #include <stdio.h> #include <conio.h> #include <locale.h> #define PI 3,1415926 fioat v(float r, float h)
C++ Функция для обработки строк Написать функцию, возвращающую самое длинное слово в строке. http://www.cyberforum.ru/cpp-beginners/thread593028.html
Вычисление следа матрицы и определителя C++
воббщем надо реализовать вычисление следа матрицы и определителя алгоритм для следа : #include <stdio.h> typedef int *pInt; main() { int N,M; pInt *a; int summa=0,i,j;
Массив структур C++
Помогите пожалуйста: Описать структуру с именем NOTE, содержащую следующие поля: фамилия, имя, номер телефона, дата рождения (массив из трёх чисел). Написать программу, выполняющую следующие действия: Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE, вывод на экран информации о человеке, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры....
C++ Интерполяция в каноническом виде. Возможна ошибка в системе Гаусса http://www.cyberforum.ru/cpp-beginners/thread592972.html
Возникли проблемы с интерполяцией в каноническом виде. Возможно проблема в Гауссе. Очень прошу помочь. Очень срочно надо! #include <string.h> #include <conio.h> #include <stdio.h> #include <windows.h> #include <stdlib.h> #include <iostream> #include <io.h> #include <math.h>
C++ Доступ к переменным Есть иерархия классов: class base{ int a; }; class der : private base{ void f(){ //Необходимо использовать переменную base::a //Но постоянно писать base:: утомляет и код становится нечитабельным //Как можно это обойти? } подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
01.06.2012, 12:09     Прокомментировать код
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// x.cpp: определяет точку входа для консольного приложения.
// это комментарий. Другим способом комментирования является /* комментарий */
 
// включение заголовочных файлов.
#include "stdafx.h" 
#include "stdafx.h" // включение одного и того же заголовочного файла во второй раз. Обычно так делать нельзя.
#include "iostream" // включение заголовочного файла. Кавычки вида " обычно обозначают, что файл является "пользовательским", то есть находится там же где проект. Обычно принято писать #include <iostream> так как это стандартный заголовочный файл, а для стандартных заголовочных файлов используются кавычки вида <>. В языке C++ не принято писать .h после имен заголовочных файлов, пишут .h в языке С.  
 
 
using namespace std; // программа использует пространство имен(namespace) std // Ключевое слово using в переводе с английского означает "используется". Классы cout и cin используемые дальше  объявлены в пространстве имен std и включены в программу посредством заголовочного файла  iostream
 
 
 // Класс, представляющий из себя массив чисел типа int. По другому подобные классы называются  последовательными контейнерами и реализованы в стандартной библиотеке как vector. 
 
class massiv {public: // объявление класса с названием massiv. все элементы класса являются public то есть доступными для всех
int n, *S; // переменные-члены класса. Тип int 4-байтовый (32битный). Указатель любого типа является 4 байтовым. Указатели очень важно инициализировать - я сам постоянно забываю инициализировать указатели. Переменная n - размер массива, S - сам массив. 
massiv (int =5); // конструктор класса. Конструктор это специальная функция, которая вызывается при создании экземпляра класса. Экземпляр класса создается в момент выделения памяти. 5 это значение, которым инициализируется параметр, по умолчанию
void vvod(); // функция ввода данных на консоль, не возвращающая значений
void vuvod();// функция вывода данных на консоль, не возвращающая значений
int max();// функция выясняющая индекс в массиве максимального элемента,  возвращающая значение типа int
int min();// функция выясняющая индекс в массиве минимального элемента,  возвращающая значение типа int
void sort();// функция сортировки массива, не возвращающая значений
};
 
massiv::massiv (int nn) // конструктор, это функция имя которой совпадает с именем класса. Аргумент - размер массива
{  // начало конструктора
n=nn; // присвоения значения количества элементов
S=new int [n];// выделение памяти. После подобного выделения нужно обязательно освобождать память оператором delete[] S. Если память не освобождена возникнет утечка памяти, и это очень серьезная проблема для крупных программ.
} // конец конструктора
 
void massiv::vvod() // ввод данных на консоль
{ // начало vvod()
 
// вывод строки на консоль
    cout << "Введите количество элементов массива: ";
 
// cout является стандартным классом вывода. << является переопределенным в классе cout оператором. Оператор это функция и можно переписать строчку примерно так    cout.operator<<("Введите количество элементов массива: "); // "Введите количество элементов массива: "  - это константный char массив. Инструкция должна завершаться точкой с запятой. Аккуратно - можно опечататься и заменить на : а компилятор выдаст ошибку.
 
 
 
// запрос количества элементов массива
    cin >> n;
 
// cin является стандартным классом ввода.  >> является переопределенным в классе оператором. По другому то же самое можно записать следующим образом cin.operator>>(n); где n это аргумент оператора
 
// Количество выделенной памяти под массив и n в данной программе не согласованы. То есть S=new int [n]; нужно вызвать здесь, предварительно освободив память выделенную в конструктора  операцией delete []S;
 
 
// запрос элементов массива
    for (int i = 0; i < n;i++) 
    {
        cout<<"\n S["<<i<<"]=";
        cin>>S[i];
    }
 
// цикл for это последовательность повторных исполнений инструкций внутри { }. Можно переписать без for по другому:
// cout<<"\n S["<<0<<"]="; cin>>S[0];
// cout<<"\n S["<<1<<"]="; cin>>S[1];
//...
// cout<<"\n S["<<n-1<<"]="; cin>>S[n-1];
// Для компактности подобной записи создан циклический оператор
 
// int i это объявление переменной-счетчика. Область видимости переменной только один цикл. Вне цикла использовать эту переменную нельзя. Но можно создать переменную с тем же именем. 
// i = 0 инициализация переменной, ей присваивается значение 0. = это операция присвоения значения.
// i < n  условие при котором выполняются заключенные в {} инструкции
// i++ постфиксная форма инкрементного увеличение переменной на единицу. Эквивалетно i = i + 1
// \n это escape-последовательность обозначающая переход каретки на новую строку. По другому пишется как endl
 
} // конец vvod()
 
void massiv::vuvod() // вывод данных на консоль
{ // начало vuvod()
    for (int i=0;i<n;i++)
        cout<<"\t"<<S[i]; // \t это escape-последовательность обозначающая табулирование
 
    cout<<endl; // перевести каретку на новую строку
} // конец vuvod()
 
int massiv::max () // выяснение индекса максимального элемента
{ // начало max
    int i; // объявление переменной счетчика цикла с именем i. Переменная не инициализирована. Перед использованием переменные должны быть проинициализированы.
    int N=0;  // объявление переменной индекса массива  с именем N. Переменная инициализирована 0
    for (i=0;i<n;i++) // цикличное изменение счетчика массива
        if (S[N]<S[i]) // сравнение двух элементов массива и сохранение индекса элемента в массиве
            N=i; // если S[N]<S[i] то  N=i;
    return (N); // возвращение значения
} // конец max
 
 
int massiv::min () // выяснение индекса  минимального элемента
{ // начало min
    int i; // счетчик
    int N=0; // индекс массива
    for (i=0;i<n;i++)// цикличное изменение счетчика массива
        if (S[N]>S[i]) // сравнение двух элементов
            N=i; // сохранение индекса элемента в массиве
    return (N); // возвращение значения из функции
} // конец min
 
void massiv::sort() // сортировка массива по убыванию ( пузырьковая)
{ // начало sort
    int N,k,buf; // N - индекс в массиве, i - счетчик, buf это переменная для того, чтобы обменять значения массива между собой
    for (int i=0;i<n-1;i++) // цикличное изменение счетчика массива
    {
        N=i; // присвоили индексу массива значение i
        for (k=i+1;k<n;k++) // цикличное изменение счетчика массива. 
 
//Чтобы отсортировать массив пузырьковым методом  нужно каждый элемент сравнить со всеми остальными  и переставить на i место kый элемент если выполняется условие  S[k]>S[i]
 
        if (S[k]>S[N]) N=k; // присвоили индексу массива значение k
 
// обмен значений двух элементов массива
        buf=S[i]; // сохранение  S[i] так как следующим оператором данные в этой переменной будут затерты
        S[i]=S[N]; // изменили S[i]
        S[N]=buf; // присвоили S[N] старое значение S[i]
        
    }
} // конец sort
 
void main() // функция main является точкой входа в программу. Функция не возвращает значений.
{ // начало main
    setlocale (LC_CTYPE,"rus"); // установка русской локали, LC_CTYPE численная константа ( объявленная в заголовочном файле), которая обозначает изменение способа обработки символов на консоли, "rus" это имя локали
    massiv S; // объявление переменной класса массив с вызовом конструктора и  выделением памяти под 5 элементов.
    S.vvod();  // вызов метода класса. Точка это операция доступа к членам класса.
    cout<<"Максимальный элемент равен "<<S.S[S.max()]<<", его индекс: " <<S.max()<<endl;
    cout<<"Минимальный элемент равен "<<S.S[S.min()]<<", его индекс: "<<S.min()<<endl;
    cout<<"Отсортированный массив:"<<endl;
    S.sort(); // сортировка массива
    S.vuvod(); // вывод массива
    system ("PAUSE"); // так делается, чтобы окно консоли не исчезло после выполнения. system исполняет команды shell. Shell в ОС Windows это cmd.exe
} // конец main
 
Текущее время: 02:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru