Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
1

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

19.03.2014, 10:47. Показов 1007. Ответов 9
Метки нет (Все метки)

Здравствуйте! Пожалуйста, как можно яснее откомментируйте коды программ, очень нужно для понимания, чтобы разобраться.. пожалуйста..

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");
}
Помогите пожалуйста..
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2014, 10:47
Ответы с готовыми решениями:

Прокомментировать код
Здравствуйте, хотелось бы спросить у старейшин, что делают каждый из блоков программы, просто...

Прокомментировать код
#pragma hdrstop #include &lt;conio.h&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; using namespace std;...

Прокомментировать код
#include &lt;iostream&gt; using namespace std; static const int N = 1000; int main() { int i,...

Прокомментировать код
Задание : С клавиатуры вводиться строка символов (не более 10). Опередить сколько символов стоят...

9
Полярный
475 / 447 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
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;
}
А есть условие задачи? Последняя функция как то непонятно что вычисляет пока. Там не просто сумма всех элементов.
1
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; записи должны быть упорядочены по времени отправления
поезда;
О вывод на экран информации о поездах, направляющихся в пункт, название
которого введено с клавиатуры;
О если таких поездов нет, выдать на дисплей соответствующее сообщение.
0
Полярный
475 / 447 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
19.03.2014, 12:41 4
Лучший ответ Сообщение было отмечено 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
#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++;
    } 
}
если что непонятно - пишите.
Во второй задаче, что конкретно непонятно? Механизм работы или назначения функций?
В третьем задании - вообще структура, а не класс.
1
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 12:48  [ТС] 5
Цитата Сообщение от dimcoder Посмотреть сообщение
Во второй задаче, что конкретно непонятно? Механизм работы или назначения функций?
ой Спасибо Вам большое все понятно так описали! Очень благодарен Вам! с 1ой задачей все понятно.)

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

3я задача приоритетней будет, если Вам не трудно, откомментируйте пожалуйста 3йю задачу.
0
Полярный
475 / 447 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
19.03.2014, 13:43 6
Лучший ответ Сообщение было отмечено alucard115 как решение

Решение

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;
}
1
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 14:02  [ТС] 7
Спасибо большое! Да, видимо с 3ей задачей накладка вышла... при компиляции правда выдает ошибку по Вашему коду, пункт назначения видимо на английском надо писать, иначе программа выводи тих на тарабарщине..
а так работает вроде) Спасибо)

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

а во 2ой задаче можете описать как функции работают?
0
Полярный
475 / 447 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
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(); //Закрываем файл
}
1
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.03.2014, 14:18  [ТС] 9
Цитата Сообщение от dimcoder Посмотреть сообщение
126 строку
Код C++
1
int x;
замените на
Код C++
1
int x = 0;
О, спасибо) Теперь программа корректно работает)

Спасибо большое, теперь мне все более менее понятно как и почему работает)) Очень благодарен Вам!
0
Полярный
475 / 447 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
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;
}
Удачи.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2014, 14:26

Прокомментировать код
Нужна помощь. Необходимо поставить комментарии к каждой строке программы. #include &quot;stdafx.h&quot;...

Прокомментировать код
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;cstdio&gt; using namespace std; const int...

Прокомментировать код
есть код программы, нужно объяснить её программный код. и исправить ошибки.помогите пожалуйста....

Прокомментировать код
Имеется небольшая часть программки, вот в собственно в чем вопрос &quot;коментарии&quot; void...


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

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

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