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

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

Восстановить пароль Регистрация
 
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 16:28     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #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
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, чтобы программа находила и выдавала именно самый дорогой канал?
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 16:28     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал
Посмотрите здесь:

C++ Используя класс отыскать самый дорогой товар и вывести скидки на товары
константные поля и операция присвоения - как быть? C++
Самый самый самый простой пример рекурсии C++
C++ Не работает операция сложения в классе. Исправить код
Помогите please cоставить программу, в которой описывается структура из полей: Название товара, Цена товара, Процентная ставка кредита. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User1990
26 / 26 / 2
Регистрация: 03.11.2009
Сообщений: 158
06.04.2012, 16:51     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #2
ну попробуй написать функцию наподобие парсера , чтобы выделить цену из строки, на основании которой и будешь искать максимум , т.е. обычная функция нахождения наибольшего
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 17:11  [ТС]     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #3
Цитата Сообщение от User1990 Посмотреть сообщение
ну попробуй написать функцию наподобие парсера , чтобы выделить цену из строки, на основании которой и будешь искать максимум , т.е. обычная функция нахождения наибольшего
Прошу простить мою наглость, но я был бы очень благодарен, если бы кто-либо просто смог черкануть сюда исправленный 3-тий блок... Я сильно завален делами, чтобы думать дальше, а работу нужно сдать уже очень скоро!
User1990
26 / 26 / 2
Регистрация: 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;
}
volt21
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 минут
Что-то не идёт!
User1990
26 / 26 / 2
Регистрация: 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(); }
volt21
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;
            }
        }
}
Вот, переделал, но увы, ответ не выдаёт ну никак! ((
User1990
26 / 26 / 2
Регистрация: 03.11.2009
Сообщений: 158
06.04.2012, 23:31     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #8
а что выдает ... ну тот вариант, который я предложил , работает , когда в файле записано так :
код название _канала цена _канала(это не учитывать)
ааааа первый 5444
ббббб россия24 55111
блин надо max = 0 , тогда будет работать
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
06.04.2012, 23:59  [ТС]     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #9
Цитата Сообщение от User1990 Посмотреть сообщение
а что выдает ... ну тот вариант, который я предложил , работает , когда в файле записано так :
код название _канала цена _канала(это не учитывать)
ааааа первый 5444
ббббб россия24 55111
блин надо max = 0 , тогда будет работать
Не, это он тогда будет наоборот самый дешёвый показывать, а если 100000, то вообще ничего не выдаёт... Или вообще Load FAILED пишет....
User1990
26 / 26 / 2
Регистрация: 03.11.2009
Сообщений: 158
07.04.2012, 00:13     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #10
как это самый дешевый ... смотри : изначально 0, затем цена 1 =1000 руб. максим=цена1, затем цена2=500руб. максимум остался прежним,т.к. цена2не больше максимум, затем цена3=1500руб. максимум=1500,т.к. 1500>1000 b и т.д. в итоге будет в максимуме наибольшая цена канала
volt21
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 и т.д. в итоге будет в максимуме наибольшая цена канала
Увы, программа не так поняла и выдала именно самый дешёвый... Завтра ещё подумаю...
User1990
26 / 26 / 2
Регистрация: 03.11.2009
Сообщений: 158
07.04.2012, 01:52     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #12
приведи конкретный пример того чтоивыводит, и еще когда вволдищь данные
Цитата Сообщение от volt21 Посмотреть сообщение
outfile << Channels[i].cena << " " << endl << endl;
зачем дублируешь перевод коретки - не надо .
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
07.04.2012, 22:50  [ТС]     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #13
Цитата Сообщение от User1990 Посмотреть сообщение
приведи конкретный пример того чтоивыводит, и еще когда вволдищь данные
зачем дублируешь перевод коретки - не надо .
Нечаянно
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
07.04.2012, 22:56  [ТС]     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #14
Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал
В общем сейчас программа выдаёт ту цену, что была введена последняя.
User1990
26 / 26 / 2
Регистрация: 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;
для того чтобы выводить на экран и название нужно куда-то запоминать структуру а так всё работает
volt21
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");
User1990
26 / 26 / 2
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 01:51     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал
Еще ссылки по теме:

C++ Составить программу, в которой описывается структура из полей: Название товара, Цена, Размер партии товара...
C++ Дан номер телевизионного канала (от 1 до 5).Вывести на экран наиболее популярные программы заданного канала
C++ Составить файл об информаций студентов в группе. Найти самый высокий и самый низкий уровень успеваемости студентов в группе

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

Или воспользуйтесь поиском по форуму:
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
09.04.2012, 01:51  [ТС]     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал #18
Цитата Сообщение от User1990 Посмотреть сообщение
во-первых что это: вопрос или утверждение
во-вторых почему maх=999999, он должен иметь изначально априори меньше значение нежели цены на каналы , понятно , порчему программа выдает не тот результат,т.е. max =0
Великолееепно! Закончена! Спасибо огромное!!!
Yandex
Объявления
09.04.2012, 01:51     Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал
Ответ Создать тему
Опции темы

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