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

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

Восстановить пароль Регистрация
 
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 10:47     Прокомментировать код #1
Здравствуйте! Пожалуйста, как можно яснее откомментируйте коды программ, очень нужно для понимания, чтобы разобраться.. пожалуйста..

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <locale> 
 
using namespace std;
 
double minElem(double *arr, int n);
double summElem(double *arr, int n);
 
int main() {
    int n = 0;
    
    setlocale(0, "rus");
    srand((unsigned)time(NULL));
 
    cout << "Введите количество элементов: ";
    cin >> n;
 
    double *arr = new double [n];
    
    for(int i = 0; i < n; i++) {
         arr[i]=rand() % 20 - 10;
        cout << " [" << i << "] = ";
        cout << arr[i];
    }
    cout << "\n Минимальный элемент: " << minElem(arr, n) << endl;
    cout << "\n Сумма элементов: " << summElem(arr, n) << endl;
    delete [] arr;
    
    system("PAUSE");
    return 0;
}
 
double minElem(double *arr, int n) 
{
    double min = arr[0];
 
    for(int i = 1; i < n; i++) {
        if(arr[i] < min)
            min = arr[i];
    }
    return min;
}
 
double summElem(double *arr, int n)
{
    double summ = 0.0;
    bool flag = false;  // Флаг
    int begin = 0;
    int end = 0;    
 
    for(int i = 0; i < n; i++) {
        if(arr[i] < 0 && !flag) {
            begin = i;
            flag = true;
        }
        else if(arr[i] < 0 && flag) {
            end = i;
            break;
        }
    }
    
    for(int i = begin + 1; i < end; i++) {
        summ += arr[i];
    }
    return summ;
}
2 задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <locale> 
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
     
    std::ifstream ifs("text.txt");  //Теперь открываем
       if(!ifs.is_open()){std::cerr<<"File not found"; return 1;} //если файл уже успели удалить, то exit
        int i = 0;
        std::string s;
        while(getline(ifs,s,'"'))       {      //Читаем слова где есть кавычки
                if(i%2) std::cout<<s<<"\n";
                i+=1;
        }
        system("PAUSE");
        ifs.close(); //Закрываем файл
}
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# include <iostream>
# include <stdlib.h>
# include <string.h>
# include <time.h>
#include<windows.h>
 
using namespace std;
 
struct TRAIN
{
    char item[15];
    int number;
    char time[6];
};
 
void zap(TRAIN *tr,int count)
{
    
    
    cout<<"------ Информация для "<<count++<<" поезда ----------------------"<<endl;
    cout<<"Введите пункт назначения : ";
    cin>>tr->item;
    
    cout<<"Введите номер поезда : ";
        cin>>tr->number;
    cout<<"Введите время прибытия  ( ЧЧ : ММ )  : ";
        cin>>tr->time;
    cout<<"----------------------------"<<endl;
    
}
 
void sort(TRAIN *tr, int &n)
           {
 TRAIN p;
 
  cout<<"Сортирока по номерам поездов произведена"<<endl;  
  
 //for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
       if (tr[j].number>tr[j+1].number) 
    {
           p=*(tr+j);
           *(tr+j)=*(tr+j+1);
           *(tr+j+1)=p;
    }
 
   }
}
 
 
void main()
{
    TRAIN inf[6];
    int count;
    int n=6;
    int i;
    int nom;
    bool flag=false;
    char otv[3] ;
    char otv1[3];
    char zn[3]="да";
 
    setlocale(LC_ALL,"rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    count=0;
 
    while(count<n)
        zap(&inf[count++],count);
 
    cout<<"Введите номер поезда для которого вы хотите получить информацию : ";
        cin>>nom;
for (i=0;i<6;i++)
 
        if (inf[i].number==nom)
        {
          
  flag=true;
            cout<<"----------------------------"<<endl;
            cout<<"Пункт назнаения : "<<inf[i].item<<endl;
            cout<<"Номер поезда : "<<inf[i].number<<endl;
            cout<<"Время прибытия : "<<inf[i].time<<endl;
            cout<<"----------------------------"<<endl;
        }
        if (flag==false)
        cout<<"Информации по вашему запросу не найдено!"<<endl;
cout<<"Хотите ли произвести сортировку базы по номеру поезда\nда/нет"<<endl;
cin>>otv;
if (*otv==*zn)
{
    sort(inf,n);
    for (i=0;i<6;i++)
     {
        cout<<"----------------------------"<<endl;
        cout<<"Пункт назнаения : "<<inf[i].item<<endl;
        cout<<"Номер поезда : "<<inf[i].number<<endl;
        cout<<"Время прибытия : "<<inf[i].time<<endl;
        cout<<"----------------------------"<<endl;
    }
}
else 
cout<<"Вывести на информацию о поездах?"<<endl;
cin>>otv1;
 
 
if (*otv1==*zn)
    for (i=0;i<6;i++)
     {
        cout<<"----------------------------"<<endl;
        cout<<"Пункт назначения : "<<inf[i].item<<endl;
        cout<<"Номер поезда : "<<inf[i].number<<endl;
        cout<<"Время прибытия : "<<inf[i].time<<endl;
        cout<<"----------------------------"<<endl;
    }
 system("PAUSE");
}
Помогите пожалуйста..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 10:47     Прокомментировать код
Посмотрите здесь:

прокомментировать код C++
C++ Прокомментировать код
C++ Прокомментировать код
C++ Прокомментировать код
C++ Прокомментировать код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
19.03.2014, 11:07     Прокомментировать код #2
Цитата Сообщение от alucard115 Посмотреть сообщение
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <locale>      //Что бы язык был русский
 
using namespace std;
 
double minElem(double *arr, int n);       //прототипы функций для нахождения минимального элемента
double summElem(double *arr, int n);      //и суммы все элементов массива
 
int main() {
    int n = 0;
    
    setlocale(0, "rus");
    srand((unsigned)time(NULL));           //это для генерации случайных чисел - что бы одинаковые не выводило
 
    cout << "Введите количество элементов: ";
    cin >> n;                                //ввод кол-ва элеменов массива
 
    double *arr = new double [n];                //Динамически выделяем памяти под массив из n элементов
    
    for(int i = 0; i < n; i++) {                    //Заполняем массив случайными числами
         arr[i]=rand() % 20 - 10;                   //от -10 до 10
        cout << " [" << i << "] = ";                //и выводим на экран
        cout << arr[i];
    }
    cout << "\n Минимальный элемент: " << minElem(arr, n) << endl; 
    cout << "\n Сумма элементов: " << summElem(arr, n) << endl;
    delete [] arr;         //Очищаем память выделенную под массив
    
    system("PAUSE");
    return 0;
}
 
double minElem(double *arr, int n) 
{
    double min = arr[0];          //Допустим, что первый элемент - минимальный
 
    for(int i = 1; i < n; i++) {   //Пробегаемся по массиву в поисках меньшего элемента
        if(arr[i] < min)           //Если нашли элемент меньше
            min = arr[i];          //То записываем его как меньший
    }
    return min;                    //Возвращаем минимальное значение массива
}
 
double summElem(double *arr, int n)
{
    double summ = 0.0;    
    bool flag = false;  // Флаг
    int begin = 0;
    int end = 0;    
 
    for(int i = 0; i < n; i++) {    //Пробегаемся по массиву
        if(arr[i] < 0 && !flag) {   //Если текущий элемент отрицателен и wtf is flag?
            begin = i;
            flag = true;
        }
        else if(arr[i] < 0 && flag) {
            end = i;
            break;
        }
    }
    
    for(int i = begin + 1; i < end; i++) {
        summ += arr[i];
    }
    return summ;
}
А есть условие задачи? Последняя функция как то непонятно что вычисляет пока. Там не просто сумма всех элементов.
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 11:26  [ТС]     Прокомментировать код #3
Цитата Сообщение от dimcoder Посмотреть сообщение
А есть условие задачи? Последняя функция как то непонятно что вычисляет пока. Там не просто сумма всех элементов.
Условие задачи:
В одномерном массив, состоящей из n вещественных элементов, вычислить:
1) номер минимального элемента массива
2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами
3) Преобразовать массив таким образом, чтобы сначала распологались все элементы, модуль которых не превышает 1, а потом - все остальные


Простите пожалуйста, вот полностью верный код к 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
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <locale> 
 
using namespace std;
 
double minElem(double *arr, int n);
double summElem(double *arr, int n);
void preobr(double *arr, int n); 
int main() {
    int n = 0;
    
    setlocale(0, "rus");
    srand((unsigned)time(NULL));
 
    cout << "Введите количество элементов: ";
    cin >> n;
 
    double *arr = new double [n];
    
    for(int i = 0; i < n; i++) {
         arr[i]=rand() % 20 - 10;
        cout << " [" << i << "] = ";
        cout << arr[i];
    }
    cout << "\n Минимальный элемент: " << minElem(arr, n) << endl;
    cout << "\n Сумма элементов: " << summElem(arr, n) << endl;
    cout << "\n Преобразованный массив:"<<endl;
    preobr(arr, n);
     for(int i = 0; i < n; i++) {
        
        cout << " [" << i << "] = ";
        cout << arr[i]<<endl;
    }
    delete [] arr;
    
    system("PAUSE");
    return 0;
}
 
double minElem(double *arr, int n) 
{
    double min = arr[0];
 
    for(int i = 1; i < n; i++) {
        if(arr[i] < min)
            min = arr[i];
    }
    return min;
}
 
double summElem(double *arr, int n)
{
    double summ = 0.0;
    bool flag = false;  // Флаг
    int begin = 0;
    int end = 0;    
 
    for(int i = 0; i < n; i++) {
        if(arr[i] < 0 && !flag) {
            begin = i;
            flag = true;
        }
        else if(arr[i] < 0 && flag) {
            end = i;
            break;
        }
    }
    
    for(int i = begin + 1; i < end; i++) {
        summ += arr[i];
    }
    return summ;
}
 
 
void preobr(double *arr, int n)
{
int k=0;
double buf;
for(int i=0;i<n;i++)
if(abs(arr[i])<=1)
{
buf=arr[k];
arr[k]=arr[i];
arr[i]=buf;
k++;
 
}
 
}
Добавлено через 7 минут
Условие 2 задачи:
Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения заключенные в кавычки.

Условие 3 задачи:
1. Определить класс с именем TRAIN, содержащий следующие поля:
О название пункта назначения;
О номер поезда;
О время отправления.
Определить методы доступа к этим полям и перегруженные операции извлечения
и вставки для объектов типа TRAIN.
2. Написать программу, выполняющую следующие действия:
О ввод с клавиатуры данных в массив, состоящий из шести объектов типа
TRAIN; записи должны быть упорядочены по времени отправления
поезда;
О вывод на экран информации о поездах, направляющихся в пункт, название
которого введено с клавиатуры;
О если таких поездов нет, выдать на дисплей соответствующее сообщение.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
19.03.2014, 12:41     Прокомментировать код #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <locale> 
 
using namespace std;
 
double minElem(double *arr, int n);     //ïðîòîòèïû ГґГіГ*êöèé äëÿ Г*Г*õîæäåГ*ГЁГї ìèГ*ГЁГ¬Г*ëüГ*îãî ýëåìåГ*ГІГ*
double summElem(double *arr, int n);    //ñóììГ* ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*, Г°Г*ñïîëîæåГ*Г*ûõ ìåæäó ïåðâûì ГЁ âòîðûì îòðèöГ*òåëüГ*ûìè ýëåìåГ*ГІГ*ìè
void preobr(double *arr, int n);        //ÏðåîáðГ*çîâГ*ГІГј Г¬Г*Г±Г±ГЁГў ГІГ*ГЄГЁГ¬ îáðГ*çîì, ÷òîáû Г±Г*Г*Г·Г*Г«Г* Г°Г*ñïîëîãГ*ëèñü ГўГ±ГҐ ýëåìåГ*ГІГ», ìîäóëü 
                                        //êîòîðûõ Г*ГҐ ïðåâûøГ*ГҐГІ 1, Г* ïîòîì - ГўГ±ГҐ îñòГ*ëüГ*ûå
 
int main() {
    int n = 0;
    
    setlocale(0, "rus");            //ГЅГІГ® äëÿ ГЈГҐГ*ГҐГ°Г*öèè ñëó÷Г*Г©Г*ûõ Г·ГЁГ±ГҐГ« - Г·ГІГ® ГЎГ» îäèГ*Г*êîâûå Г*ГҐ âûâîäèëî
    srand((unsigned)time(NULL));
 
    cout << "Ââåäèòå êîëè÷åñòâî ýëåìåГ*òîâ: ";       //ââîä êîë-ГўГ* ýëåìåГ*îâ Г¬Г*Г±Г±ГЁГўГ*
    cin >> n;
 
    double *arr = new double [n];                 //ÄèГ*Г*ìè÷åñêè âûäåëÿåì ГЇГ*ìÿòè ïîä Г¬Г*Г±Г±ГЁГў ГЁГ§ n ýëåìåГ*òîâ
    
    for(int i = 0; i < n; i++) {               //Г‡Г*ïîëГ*ГїГҐГ¬ Г¬Г*Г±Г±ГЁГў ñëó÷Г*Г©Г*ûìè Г·ГЁГ±Г«Г*ìè
         arr[i]=rand() % 20 - 10;              //îò -10 äî 10
        cout << " [" << i << "] = ";           //ГЁ âûâîäèì Г*Г* ГЅГЄГ°Г*Г*
        cout << arr[i];
    }
    cout << "\n ГЊГЁГ*ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІ: " << minElem(arr, n) << endl;
    cout << "\n ÑóììГ* ýëåìåГ*òîâ: " << summElem(arr, n) << endl;
    cout << "\n ÏðåîáðГ*çîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў:"<<endl;
    preobr(arr, n);                //âûçûâГ*ГҐГ¬ ГґГіГ*êöèþ äëÿ ïðåîáðГ*çîâГ*Г*ГЁГї Г¬Г*Г±Г±ГЁГўГ*
     for(int i = 0; i < n; i++) {            //âûâîäèì ïðåîáðГ*çîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў Г*Г* ГЅГЄГ°Г*Г*
        
        cout << " [" << i << "] = ";
        cout << arr[i]<<endl;
    }
    delete [] arr;           //ГЋГ·ГЁГ№Г*ГҐГ¬ ГЇГ*ìÿòü âûäåëåГ*Г*ГіГѕ ïîä Г¬Г*Г±Г±ГЁГў
    
    system("PAUSE");
    return 0;
}
 
 
double minElem(double *arr, int n) 
{
    double min = arr[0];          //Äîïóñòèì, Г·ГІГ® ïåðâûé ýëåìåГ*ГІ - ìèГ*ГЁГ¬Г*ëüГ*ûé
 
    for(int i = 1; i < n; i++) {   //ÏðîáåãГ*åìñÿ ГЇГ® Г¬Г*Г±Г±ГЁГўГі Гў ïîèñêГ*Гµ ìåГ*ГјГёГҐГЈГ® ýëåìåГ*ГІГ*
        if(arr[i] < min)           //Åñëè Г*Г*øëè ýëåìåГ*ГІ ìåГ*ГјГёГҐ
            min = arr[i];          //Г’Г® Г§Г*ïèñûâГ*ГҐГ¬ ГҐГЈГ® ГЄГ*ГЄ ìåГ*ГјГёГЁГ©
    }
    return min;                    //ÂîçâðГ*Г№Г*ГҐГ¬ ìèГ*ГЁГ¬Г*ëüГ*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ*
}
 
double summElem(double *arr, int n)
{
    double summ = 0.0;          //ГЋГЎГ*óëÿåì èñêîìóþ ñóììó
    bool flag = false;  // ÔëГ*ГЈ
    int begin = 0;        //Äîïóñòèì, Г·ГІГ® ïåðâûé ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ* - îòðèöГ*òåëüГ*ûé, ГІГ® ГҐГ±ГІГј òîò îò êîòîðîãî Г*ГіГ¦Г*Г® Г*Г*õîäèòü ñóììó
    int end = 0;          //Äîïóñòèì, Г·ГІГ® ïåðâûé ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ* - òîæå îòðèöГ*òåëüГ*ûé; äî Г*ГҐГЈГ® ìû Г*Г*õîäèì ñóììó
 
    for(int i = 0; i < n; i++) {            //èäåì ГЇГ® Г¬Г*Г±Г±ГЁГўГі
        if(arr[i] < 0 && !flag) {           //åñëè ГІГҐГЄГіГ№ГЁГ© ýëåìåГ*ГІ îòðèöГ*òåëüГ*ûé ГЁ Г*ГЁ îäГ*îãî îòðèöГ*òåëüГ*îãî ýëåìåГ*ГІГ* Г*Г*éäåГ*Г® ГҐГ№ГҐ Г*ГҐ áûëî, ГІГ®
            begin = i;                      //ГЁГ*äåêñ ГІГҐГЄГіГѕГ№ГҐГЈГ® ýëåìåГ*ГІГ* - Г*Г*Г·Г*ëî ìåñòГ* îòêóäГ* Г*ГіГ¦Г*Г® Г±ГЄГ«Г*äûâГ*ГІГј
            flag = true;                    //ïåðâûé îòðèöГ*òåëüГ*ûé ýëåìåГ*ГІ Г*Г*éäåГ*
        }
        else if(arr[i] < 0 && flag) {       //åñëè ГІГҐГЄГіГ№ГЁГ© ýëåìåГ*ГІ - âòîðîé Г*Г*éäåГ*Г*ûé îòðèöГ*òåëüГ*ûé ýëåìåГ*ГІ, ГІГ®
            end = i;                        //Г®Г* Г±ГІГ*Г*îâèòñÿ ГЄГ®Г*ГҐГ·Г*ûì ýëåìåГ*òîâ ñóììû
            break;                          //âûõîäèì ГЁГ§ öèêëГ* - Г*ГЁГ·ГҐГЈГ® Г*Г*Г¬ áîëüøå ГЁГ±ГЄГ*ГІГј Г*ГҐ Г*ГіГ¦Г*Г®, ГІ.ГЄ. ïåðâûé ГЁ âòîðîé îòð. ýëåìåГ*ГІГ» Г*Г*éäåГ*Г»
        }
    }
    
    for(int i = begin + 1; i < end; i++) {        //Г±Г·ГЁГІГ*ГҐГ¬ ñóììó ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ* îò ïåðâîãî îòðèöГ*òåëüГ*îãî ýëåìåГ*ГІГ* äî âòîðîãî (Г*ГҐ âêëþ÷èòåëüГ*Г®)
        summ += arr[i];
    }
    return summ;         //âîçâðГ*Г№Г*ГҐГ¬ èñêîìóþ ñóììó
}
 
 
void preobr(double *arr, int n)
{
    int k=0;           //êîë-ГўГ® ýëåìåГ*òîâ, ìîäóëü êîòîðûõ ìåГ*ГјГёГҐ åäèГ*èöû. Ïðåäïîëîæèì Г·ГІГ® ГЁГµ Г*îëü (òîëüêî ïîêГ*)
    double buf;            //ГЎГіГґГҐГ°Г*Г*Гї ïåðåìåГ*Г*Г*Гї äëÿ ïðîèçâåäåГ*ГЁГї ïðîìåæóòî÷Г*ûé Г°Г*ñ÷åòîâ, Г·ГІГ® ГЎГ» ìåГ*ГїГІГј ìåñòГ*ìè ýëåìåГ*ГІГ» ìîäóëü êîòîðûõ ìåГ*ГјГёГҐ îäГ*îãî Г± ïåðâûìè ýëåìåГ*ГІГ*ìè Г¬Г*Г±Г±ГЁГўГ*
    for(int i=0;i<n;i++)   //èäåì ГЇГ® Г¬Г*Г±Г±ГЁГўГі
    if(abs(arr[i])<=1)      //åñëè ìîäóëü ГІГҐГЄГіГ№ГҐГЈГ® ýëåìåГ*ГІГ* ìåГ*ГјГёГҐ îäГ*îãî, ГІГ®
    {                       //ìåГ*ГїГҐГ¬ ГҐГЈГ® ìåñòГ*ìè Г± ýëåìåГ*òîì Г± ГЁГ*äåêñîì k
        buf=arr[k];         
        arr[k]=arr[i];
        arr[i]=buf;
        k++;
    } 
}
если что непонятно - пишите.
Во второй задаче, что конкретно непонятно? Механизм работы или назначения функций?
В третьем задании - вообще структура, а не класс.
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 12:48  [ТС]     Прокомментировать код #5
Цитата Сообщение от dimcoder Посмотреть сообщение
Во второй задаче, что конкретно непонятно? Механизм работы или назначения функций?
ой Спасибо Вам большое все понятно так описали! Очень благодарен Вам! с 1ой задачей все понятно.)

Во 2ой задаче назначения функций не совсем понятно..(

3я задача приоритетней будет, если Вам не трудно, откомментируйте пожалуйста 3йю задачу.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
19.03.2014, 13:43     Прокомментировать код #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
alucard115, написал свой код, не в обиду автору кода третьего задания, но по условию там нужно класс создать а не структуру + методы, плюшки, + свои блэкджэк и шлюхи, но там этого не было.
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <iostream>
#include <cstdlib>
#include <locale>
 
using namespace std;
 
class Train            //класс поезд
{
    friend istream& operator>>(istream&, Train&);   //объявляем друга класса, чтобы можно было вводить инфу в поезд так: cin >> poezd;
    friend ostream& operator<<(ostream&, Train&);    //объявляем друга класса, чтобы можно было выводить инфу о поезде cout << poezd;
    public:
        Train();    //конструктор
        
        void setDestination(string);      //установить пункт назначения
        string getDestination(){return destination;}     //узнать пункт назначения
        
        void setPlateNumber(int);      //установить номер поезда
        int getPlateNumber(){return plateNumber;}   //узнать номер поезда
        
        void setTimeOfStart(int, int, int);    //выставить время старта поезда
        int getHour(){return hour;}         //узнать время старта: часы, минуты, секунды
        int getMinute(){return minute;}
        int getSecond(){return seconds;}
        
        int calculateSecondsFromStart(){return 3600*hour + 60*minute + seconds;}    //этот метод поможет в сортировке массива позже. Вовзращает в секундах от полночи когда стартовал поезд
        
        void print();     //вывести инфу о поезде
        
    private:
        string destination;   //пункт назначения
        int plateNumber;   //номер поезда
        int hour;
        int minute;
        int seconds;
};
 
Train::Train()
{
    setDestination("");     //все значения будут нулями, когда будут создаватся поезда
    setPlateNumber(0);
    setTimeOfStart(0, 0, 0);
}
        
void Train::setDestination(string name)
{
    destination = name;     
}
        
void Train::setPlateNumber(int x)
{
    plateNumber = x;
}
        
void Train::setTimeOfStart(int hh, int mm, int ss)
{
    if (hh >= 0 && hh < 24)
        hour = hh;
    else
    {
        hour = 0;
        cout << "Час выставлен неправильно! Приравнен к полуночи." << endl;
    }
    
    if (mm >= 0 && mm < 60)
        minute = mm;
    else
    {
        minute = 0;
        cout << "Минуты выставлены неправильно! Приравнены к нулю." << endl;
    }
    
    if (ss >= 0 && ss < 60)
        seconds = ss;
    else
    {
        seconds = 0;
        cout << "Секунды выставлены неправильно! Приравнены к нулю." << endl;
    }
}
        
void Train::print()
{
    cout << "Номер поезда: " << plateNumber << endl;
    cout << "Пункт назначения: " << destination << endl;
    cout << "Время отхода: " << hour << ":" << minute << ":" << seconds << endl;
}
 
istream& operator>>(istream &input, Train &train)
{
    cout << "Введите номер поезда: ";
    input >> train.plateNumber;
    cout << "Введите пункт назначения: ";
    input >> train.destination;
    cout << "Введите время отхода (чч мм сс): ";
    int hh, mm, ss;
    input >> hh >> mm >> ss;
    train.setTimeOfStart(hh, mm, ss);
    return input;
}
 
ostream& operator<<(ostream &output, Train &train)
{
    train.print();
    return output;
}
 
int main() 
{
    setlocale(0, "rus");
    
    const int N = 2;    //кол-во поездов
    Train station[N];    //создаем станцию из N поездов
    
    for (int i = 0; i < N; i++)     //вводим инфу о поездаъ
        cin >> station[i];
    
    for (int i = 0; i < N; i++)       //сортируем массив станция
        for (int j = 0; j < N; j++)
            if (station[i].calculateSecondsFromStart() > station[j].calculateSecondsFromStart())    //если i стартанул позже чем j, то надо поменять их местами
            {
                Train buf = station[j];
                station[j] = station[i];
                station[i] = buf;
            }
    
    int x;  //переменная для того, что введет юзер
    
    for (int i = 0; i < N; i++)
        cout << station[i] << endl;
    cout << endl << endl;
    
    while (x != -1)   //пока юзер не ввел -1 для выходя из проги
    {
        cout << "Введите номер поезда для его печати на экран или -1 для выхода: ";
        cin >> x;
        bool found = false;   //думаем, что такого поезда нет в природе
        for (int i = 0; i < N; i++)    //
            if(station[i].getPlateNumber() == x)   //а вдруг есть?
            {
                cout << station[i] << endl;    //выводим поезд, если таки нашли
                found = true;    //точно есть, я так и знал
            }
            
        if (!found)  //если юзер ввел неверный номер поезда, то есть мы его не нашли
            cout << "Не найден поезд с таким номером." << endl;
    }
    
    system("PAUSE");
    return 0;
}
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 14:02  [ТС]     Прокомментировать код #7
Спасибо большое! Да, видимо с 3ей задачей накладка вышла... при компиляции правда выдает ошибку по Вашему коду, пункт назначения видимо на английском надо писать, иначе программа выводи тих на тарабарщине..
а так работает вроде) Спасибо)

Прокомментировать код
а во 2ой задаче можете описать как функции работают?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
19.03.2014, 14:08     Прокомментировать код #8
Цитата Сообщение от alucard115 Посмотреть сообщение
выдает ошибку
126 строку
C++
1
int x;
замените на
C++
1
int x = 0;
Цитата Сообщение от alucard115 Посмотреть сообщение
во 2ой задаче можете описать как функции работают?
Тут конечно повозиться пришлось. Совету почитать про getline() и как она работает, тут она всю работу делает:
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
#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <locale> 
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
     
    std::ifstream ifs("text.txt");  //Теперь открываем файл text.txt
    
    if(!ifs.is_open())  //проверяем, существует ли файл text.txt, и если нет, то значит работать нам не счем и мы выходим из проги...
    {
        std::cerr<<"File not found";       //...злостно при этом выругавшись
        return 1;
    }
    
    int i = 0;     //номер текущей кавычки
    std::string s;
    while(getline(ifs,s,'"'))   //читаем все символы начиная сначала или с последней прочитанной ковычки до первой найденной кавычки
    {      
        if(i%2 != 0)                      //если i - нечетная ковычка. То есть если ковычка нечетная - это значит, что мы прочитали символы между ковычек, а если четная, то вне ковычек и выводить ничего не нужно
            std::cout<<s<<"\n";        //то выводим на экран строку
        i += 1;                 //увеличиваем i на единицу
    }
    
    system("PAUSE");
    
    ifs.close(); //Закрываем файл
}
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 14:18  [ТС]     Прокомментировать код #9
Цитата Сообщение от dimcoder Посмотреть сообщение
126 строку
Код C++
1
int x;
замените на
Код C++
1
int x = 0;
О, спасибо) Теперь программа корректно работает)

Спасибо большое, теперь мне все более менее понятно как и почему работает)) Очень благодарен Вам!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2014, 14:26     Прокомментировать код
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
19.03.2014, 14:26     Прокомментировать код #10
Спасибо за спасибо! Код третьей задачи обновил - сортировку и диалог с юзером, так лучше будет:
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include <iostream>
#include <cstdlib>
#include <locale>
 
using namespace std;
 
class Train            //класс поезд
{
    friend istream& operator>>(istream&, Train&);   //объявляем друга класса, чтобы можно было вводить инфу в поезд так: cin >> poezd;
    friend ostream& operator<<(ostream&, Train&);    //объявляем друга класса, чтобы можно было выводить инфу о поезде cout << poezd;
    public:
        Train();    //конструктор
        
        void setDestination(string);      //установить пункт назначения
        string getDestination(){return destination;}     //узнать пункт назначения
        
        void setPlateNumber(int);      //установить номер поезда
        int getPlateNumber(){return plateNumber;}   //узнать номер поезда
        
        void setTimeOfStart(int, int, int);    //выставить время старта поезда
        int getHour(){return hour;}         //узнать время старта: часы, минуты, секунды
        int getMinute(){return minute;}
        int getSecond(){return seconds;}
        
        int calculateSecondsFromStart(){return 3600*hour + 60*minute + seconds;}    //этот метод поможет в сортировке массива позже. Вовзращает в секундах от полночи когда стартовал поезд
        
        void print();     //вывести инфу о поезде
        
    private:
        string destination;   //пункт назначения
        int plateNumber;   //номер поезда
        int hour;
        int minute;
        int seconds;
};
 
Train::Train()
{
    setDestination("");     //все значения будут нулями, когда будут создаватся поезда
    setPlateNumber(0);
    setTimeOfStart(0, 0, 0);
}
        
void Train::setDestination(string name)
{
    destination = name;     
}
        
void Train::setPlateNumber(int x)
{
    plateNumber = x;
}
        
void Train::setTimeOfStart(int hh, int mm, int ss)
{
    if (hh >= 0 && hh < 24)
        hour = hh;
    else
    {
        hour = 0;
        cout << "Час выставлен неправильно! Приравнен к полуночи." << endl;
    }
    
    if (mm >= 0 && mm < 60)
        minute = mm;
    else
    {
        minute = 0;
        cout << "Минуты выставлены неправильно! Приравнены к нулю." << endl;
    }
    
    if (ss >= 0 && ss < 60)
        seconds = ss;
    else
    {
        seconds = 0;
        cout << "Секунды выставлены неправильно! Приравнены к нулю." << endl;
    }
}
        
void Train::print()
{
    cout << "Номер поезда: " << plateNumber << endl;
    cout << "Пункт назначения: " << destination << endl;
    cout << "Время отхода: " << hour << ":" << minute << ":" << seconds << endl;
}
 
istream& operator>>(istream &input, Train &train)
{
    cout << "Введите номер поезда: ";
    input >> train.plateNumber;
    cout << "Введите пункт назначения: ";
    input >> train.destination;
    cout << "Введите время отхода (чч мм сс): ";
    int hh, mm, ss;
    input >> hh >> mm >> ss;
    train.setTimeOfStart(hh, mm, ss);
    return input;
}
 
ostream& operator<<(ostream &output, Train &train)
{
    train.print();
    return output;
}
 
int main() 
{
    setlocale(0, "rus");
    
    const int N = 3;    //кол-во поездов
    Train station[N];    //создаем станцию из N поездов
    
    for (int i = 0; i < N; i++)     //вводим инфу о поездаъ
        cin >> station[i];
    
    for (int i = 0; i < N-1; i++)       //сортируем массив станция
        for (int j = i+1; j < N; j++)
            if (station[i].calculateSecondsFromStart() > station[j].calculateSecondsFromStart())    //если i стартанул позже чем j, то надо поменять их местами
            {
                Train buf = station[j];
                station[j] = station[i];
                station[i] = buf;
            }
    
    int x;  //переменная для того, что введет юзер
    
    for (int i = 0; i < N; i++)
        cout << station[i] << endl;
    cout << endl << endl;
    
    cout << "Введите номер поезда для его печати на экран или -1 для выхода: ";
        cin >> x;
        
    while (x != -1)   //пока юзер не ввел -1 для выходя из проги
    {
        bool found = false;   //думаем, что такого поезда нет в природе
        for (int i = 0; i < N; i++)    //
            if(station[i].getPlateNumber() == x)   //а вдруг есть?
            {
                cout << station[i] << endl;    //выводим поезд, если таки нашли
                found = true;    //точно есть, я так и знал
            }
            
        if (!found)  //если юзер ввел неверный номер,
            cout << "Не найден поезд с таким номером." << endl;
        cout << "Введите номер поезда для его печати на экран или -1 для выхода: ";
            cin >> x;
    }
    
    system("PAUSE");
    return 0;
}
Удачи.
Yandex
Объявления
19.03.2014, 14:26     Прокомментировать код
Ответ Создать тему
Опции темы

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