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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
volt21
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 68
#1

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 16:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поля структуры: код телевизионного канала, название, цена. Операция: найти самый дорогой канал (C++):

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

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

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

Описать структуру Menu, содержащую поля: название блюда, вес блюда, количество калорий, цена - C++
Описать структуру Menu, содержащую следующие поля: название блюда, вес блюда, количество калорий, цена. Вывести на экран информацию обо...

Используя класс отыскать самый дорогой товар и вывести скидки на товары - C++
Помогите пожалуста с задачей: создать программу которая формирует накладную на три товара, и используя класс отыскать самый дорогой товар...

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
08.04.2012, 01:02
Ответ Создать тему
Опции темы

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