Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
1

Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал

06.04.2012, 16:28. Показов 1854. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include<iostream>
#include<fstream>
#include<conio.h>
#include<stdio.h>
#include <string>
 
using namespace std;
 
 
int main()
{
    cout << " Menu: " << endl << endl;
    cout << " 1.Insert channels " << endl;
    cout << " 2.Show channels " << endl;
    cout << " 3.Find most expensive channel " << endl;
    cout << " 4.Exit " << endl << endl;
    int a;
    int n;
    int k=0;
    cout << " Chose number of menu: ";
        cin >> a;
        cout << endl;
struct informacii
{
    char Kod[255];
    char Nazvanie[255];
    int cena;
};
        switch(a)
        {
 
        case 1:
            {
                ofstream outfile("Information.txt");
                if (!outfile)
                    cout << "File open error" << endl;
                else
                {
                    cout << "File Successfully opened " << endl;
                    struct informacii Channels[255]={0};
                    int i,n;
                    cout << "How many channels " << endl;
                    cin >> n;
                    for(i=0; i<n; i++)
                    {
                        cout << " Kod " << endl;
                        cin >> Channels[i].Kod;
                        outfile << Channels[i].Kod << " ";
 
                        cout << " Nazvanie " << endl;
                        cin >> Channels[i].Nazvanie;
                        outfile << Channels[i].Nazvanie << " ";
 
                        cout << " Cena " << endl;
                        cin >> Channels[i].cena;
                        outfile << Channels[i].cena << " "  << endl << endl;
                    }
                    outfile.close();
                    cout << "File successfully closed" << endl << endl;
                }
                return main();
            }
 
        case 2:
            {
                ifstream infile("Information.txt");
                if (!infile)
                    cout << "File open error" << endl;
                else
                {
                    cout << "File successfully opened" << endl << endl;
                    char c;
                    while (infile)
                    {
                        infile.get(c);
                        if (!infile.eof())
                        {
                            cout << c;
                        }
                    }
                }
                infile.close();
                cout << "File successfully closed" << endl << endl;
                return main();
            }
            
        case 3:
            {
                string buf, to_find;
                char * file_name = "simple.txt";
                long cnt = 0;
                cout << "Word to find: ";
                cin >> to_find;
                ifstream ifs("Information.txt");
                if ( ! ifs.is_open() )
                {
                    cerr << "Can't open file!" << endl;
                    return 1;
                }
   
                while ( getline(ifs, buf) )
                {
                    if ( buf.find(to_find) != string::npos )
                    {
                        cout << buf << endl;
                        ++cnt;
                    }
                }
    ifs.close();
   
    if ( ! cnt )
        cout << "No words found." << endl;
    else
        cout << "Found " << cnt << " word(s)" << endl;
    return main();
            }
 
 
        case 4:
            {
                cout << "********** " << " Bye" << " **********" << endl << endl;
        break;
            }
        }
}
Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал, используя только язык С++.

Суть вопроса:
Как изменить case3, чтобы программа находила и выдавала именно самый дорогой канал?
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2012, 16:28
Ответы с готовыми решениями:

Дан номер телевизионного канала (от 1 до 5).Вывести на экран наиболее популярные программы заданного канала
Дан номер телевизионного канала (от 1 до 5).Вывести на экран наиболее популярные программы...

Определить самый дорогой диск (структуры)
Подскажите пожалуйста, как определить самый дорогой диск? #include &lt;iostream.h&gt; #include...

Записи (Структуры): Выяснить, сколько стоит самый дорогой и самый дешевый препарат
На аптечном складе хранятся лекарства. Сведения о лекарствах содержатся в специальной ведомости:...

Как по сети передать видеотрансляцию телевизионного канала с компьютера на телевизор?
Доброго дня всем. &quot;Как по сети передать видеотрансляцию телевизионного канала с компьютера на...

17
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
06.04.2012, 16:51 2
ну попробуй написать функцию наподобие парсера , чтобы выделить цену из строки, на основании которой и будешь искать максимум , т.е. обычная функция нахождения наибольшего
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 17:11  [ТС] 3
Цитата Сообщение от User1990 Посмотреть сообщение
ну попробуй написать функцию наподобие парсера , чтобы выделить цену из строки, на основании которой и будешь искать максимум , т.е. обычная функция нахождения наибольшего
Прошу простить мою наглость, но я был бы очень благодарен, если бы кто-либо просто смог черкануть сюда исправленный 3-тий блок... Я сильно завален делами, чтобы думать дальше, а работу нужно сдать уже очень скоро!
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
06.04.2012, 17:32 4
C++
1
2
3
4
5
6
7
8
max=100000;
while(!ifs.eof()){
ifs>>cod<<" ";
ifs>>nazvanie<<" ";
ifs>>chena<<"\n";
if(chena>max)
max=chena;
}
1
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 20:06  [ТС] 5
Цитата Сообщение от User1990 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
max=100000;
while(!ifs.eof()){
ifs>>cod<<" ";
ifs>>nazvanie<<" ";
ifs>>chena<<"\n";
if(chena>max)
max=chena;
}
Спасибо, от этого оттолкнусь!

Добавлено через 1 час 59 минут
Что-то не идёт!
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
06.04.2012, 22:24 6
Цитата Сообщение от volt21 Посмотреть сообщение
case 3: { string buf, to_find; char * file_name = "simple.txt"; long cnt = 0; cout << "Word to find: "; cin >> to_find; ifstream ifs("Information.txt"); if ( ! ifs.is_open() ) { cerr << "Can't open file!" << endl; return 1; } while ( getline(ifs, buf) ) { if ( buf.find(to_find) != string::npos ) { cout << buf << endl; ++cnt; } } ifs.close(); if ( ! cnt ) cout << "No words found." << endl; else cout << "Found " << cnt << " word(s)" << endl; return main(); }
переделать как
C++
1
2
3
4
5
6
7
8
9
10
11
12
case 3: { string buf, to_find; char * file_name = "simple.txt",cod[255],nazvanie[255]; long max=1000000;int  chena;  ifstream ifs("Information.txt"); 
if ( ! ifs.is_open() ) { cerr << "Can't open file!" << endl; return 1; } 
while ( !ifs.eof() ) {
ifs>>cod;
ifs>>nazvanie; 
ifs>>chena; 
 if(chena>max)  
       max=chena;
} 
ifs.close(); 
if(max!=1000000) cout<< nazvanie<<" "<<chena<<" "<<cod<<std::endl;
 return main(); }
1
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 23:15  [ТС] 7
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
#include<iostream>
#include<fstream>
#include<conio.h>
#include<stdio.h>
#include <string>
 
using namespace std;
 
 
int main()
{
    cout << " Menu: " << endl << endl;
    cout << " 1.Insert channels " << endl;
    cout << " 2.Show channels " << endl;
    cout << " 3.Find channel " << endl;
    cout << " 4.Exit " << endl << endl;
    int a;
    int n;
    int k=0;
    cout << " Chose number of menu: ";
        cin >> a;
        cout << endl;
struct informacii
{
    char kod[255];
    char nazvanie[255];
    int cena;
};
        switch(a)
        {
 
        case 1:
            {
                ofstream outfile("Information.txt");
                if (!outfile)
                    cout << "File open error" << endl;
                else
                {
                    cout << "File Successfully opened " << endl;
                    struct informacii Channels[255]={0};
                    int i,n;
                    cout << "How many channels " << endl;
                    cin >> n;
                    for(i=0; i<n; i++)
                    {
                        cout << " Kod " << endl;
                        cin >> Channels[i].kod;
                        outfile << Channels[i].kod << " ";
 
                        cout << " Nazvanie " << endl;
                        cin >> Channels[i].nazvanie;
                        outfile << Channels[i].nazvanie << " ";
 
                        cout << " Cena " << endl;
                        cin >> Channels[i].cena;
                        outfile << Channels[i].cena << " "  << endl << endl;
                    }
                    outfile.close();
                    cout << "File successfully closed" << endl << endl;
                }
                return main();
            }
 
        case 2:
            {
                ifstream infile("Information.txt");
                if (!infile)
                    cout << "File open error" << endl;
                else
                {
                    cout << "File successfully opened" << endl << endl;
                    char c;
                    while (infile)
                    {
                        infile.get(c);
                        if (!infile.eof())
                        {
                            cout << c;
                        }
                    }
                }
                infile.close();
                cout << "File successfully closed" << endl << endl;
                return main();
            }
 
            case 3:
                {
                    string buf, to_find; char * file_name = "simple.txt",kod[255],nazvanie[255]; long max=1000000;int  cena;  ifstream ifs("Information.txt"); 
                    if ( ! ifs.is_open() ) { cerr << "Can't open file!" << endl; return 1; } 
                    while ( !ifs.eof() )
                    {
                        ifs>>kod;
                        ifs>>nazvanie; 
                        ifs>>cena; 
                            if(cena>max) 
                                max=cena;
                    }
                    ifs.close(); 
                    if(max!=1000000) cout<< nazvanie<<" "<<cena<<" "<<kod<<std::endl;
                    return main();
                } 
            
        case 4:
            {
                cout << "********** " << " Bye" << " **********" << endl << endl;
        break;
            }
        }
}
Вот, переделал, но увы, ответ не выдаёт ну никак! ((
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
06.04.2012, 23:31 8
а что выдает ... ну тот вариант, который я предложил , работает , когда в файле записано так :
код название _канала цена _канала(это не учитывать)
ааааа первый 5444
ббббб россия24 55111
блин надо max = 0 , тогда будет работать
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 23:59  [ТС] 9
Цитата Сообщение от User1990 Посмотреть сообщение
а что выдает ... ну тот вариант, который я предложил , работает , когда в файле записано так :
код название _канала цена _канала(это не учитывать)
ааааа первый 5444
ббббб россия24 55111
блин надо max = 0 , тогда будет работать
Не, это он тогда будет наоборот самый дешёвый показывать, а если 100000, то вообще ничего не выдаёт... Или вообще Load FAILED пишет....
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
07.04.2012, 00:13 10
как это самый дешевый ... смотри : изначально 0, затем цена 1 =1000 руб. максим=цена1, затем цена2=500руб. максимум остался прежним,т.к. цена2не больше максимум, затем цена3=1500руб. максимум=1500,т.к. 1500>1000 b и т.д. в итоге будет в максимуме наибольшая цена канала
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
07.04.2012, 01:44  [ТС] 11
Цитата Сообщение от User1990 Посмотреть сообщение
как это самый дешевый ... смотри : изначально 0, затем цена 1 =1000 руб. максим=цена1, затем цена2=500руб. максимум остался прежним,т.к. цена2не больше максимум, затем цена3=1500руб. максимум=1500,т.к. 1500>1000 b и т.д. в итоге будет в максимуме наибольшая цена канала
Увы, программа не так поняла и выдала именно самый дешёвый... Завтра ещё подумаю...
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
07.04.2012, 01:52 12
приведи конкретный пример того чтоивыводит, и еще когда вволдищь данные
Цитата Сообщение от volt21 Посмотреть сообщение
outfile << Channels[i].cena << " " << endl << endl;
зачем дублируешь перевод коретки - не надо .
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
07.04.2012, 22:50  [ТС] 13
Цитата Сообщение от User1990 Посмотреть сообщение
приведи конкретный пример того чтоивыводит, и еще когда вволдищь данные
зачем дублируешь перевод коретки - не надо .
Нечаянно
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
07.04.2012, 22:56  [ТС] 14
Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал

В общем сейчас программа выдаёт ту цену, что была введена последняя.
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
08.04.2012, 01:02 15
Цитата Сообщение от volt21 Посмотреть сообщение
if(max!=1000000) cout<< nazvanie<<" "<<cena<<" "<<kod<<std::endl;
C++
1
if(max!=0) cout<<max<<std::endl;
для того чтобы выводить на экран и название нужно куда-то запоминать структуру а так всё работает
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
08.04.2012, 11:32  [ТС] 16
Цитата Сообщение от User1990 Посмотреть сообщение
C++
1
if(max!=0) cout<<max<<std::endl;
для того чтобы выводить на экран и название нужно куда-то запоминать структуру а так всё работает
У меня почему-то не правильно работает. Заменив
C++
1
if(max!=0) cout<< nazvanie<<" "<<cena<<" "<<kod<<std::endl;
на
C++
1
if(max!=0) cout<<max<<std::endl;
, теперь выдаёт просто число "999999"

из-за строки со значением "long max=999999"
C++
1
string buf, to_find; char * file_name = "simple.txt",kod[255],nazvanie[255]; long max=999999;int  cena; ifstream ifs("Information.txt");
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
08.04.2012, 15:26 17
Цитата Сообщение от volt21 Посмотреть сообщение
1
if(max!=0) cout<<max<<std::endl;
, теперь выдаёт просто число "999999"
из-за строки со значением "long max=999999"
Код C++
1
string buf, to_find; char * file_name = "simple.txt",kod[255],nazvanie[255]; long max=999999;int
во-первых что это: вопрос или утверждение
во-вторых почему maх=999999, он должен иметь изначально априори меньше значение нежели цены на каналы , понятно , порчему программа выдает не тот результат,т.е. max =0
1
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
09.04.2012, 01:51  [ТС] 18
Цитата Сообщение от User1990 Посмотреть сообщение
во-первых что это: вопрос или утверждение
во-вторых почему maх=999999, он должен иметь изначально априори меньше значение нежели цены на каналы , понятно , порчему программа выдает не тот результат,т.е. max =0
Великолееепно! Закончена! Спасибо огромное!!!
0
09.04.2012, 01:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2012, 01:51
Помогаю со студенческими работами здесь

Записи: сколько стоит самый дорогой и самый дешёвый препарат на складе?
На аптечном складе хранятся лекарства. Сведения о лекарствах содержатся в специальной ведомости:...

Выяснить, сколько стоит самый дорогой и самый дешевый препарат в аптеке
Условие задачи: На аптечном складе хранятся лекарства. Сведения о лекарствах содержаться в...

Определить, сколько стоит самый дешевый и самый дорогой обед
В столовой предлагается N комплексных обедов, состоящих из Q блюд . Известна стоимость и...

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru