0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
1

Вывести в алфавитном порядке названия культур, урожай которых убирается в августе

18.11.2021, 18:13. Показов 835. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется список семян овощных культур. Каждый элемент списка содержит следующую информацию: название культуры, номера месяцев посева, высадки рассады, и уборки урожая. Вывести в алфавитном порядке названия культур, урожай которых убирается в августе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2021, 18:13
Ответы с готовыми решениями:

Вывести в алфавитном порядке названия журналов и авторов статей
Уважаемые программисты, очень прошу вас о помощи в написании программы. Буду безумно благодарен...

Вывести те слова, в которых гласные находятся в алфавитном порядке
вводятся N произвольных предложений. вывести те слова, в которых гласныенаходятся в алфавитном...

Вывести в алфавитном порядке слова текста, в которых повторяется первая буква
program PascalGuru; uses crt; label 1,2; var s,zs,zp,gl,slovo,l:string; i,j,p,n,nn:integer;...

Вывести в алфавитном порядке слова, первая буква которых согласная, а последняя гласная
Помогите, пожалуйста. Ничего не работает. Вероятно ошибка с массивами (но это не точно). Дан...

19
12 / 11 / 2
Регистрация: 06.11.2021
Сообщений: 33
18.11.2021, 21:42 2
Пример с морковкой
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
#include <iostream>
#include <string>
using namespace std;
 
struct plant
{
    string name;
    int whenPlantedMonth;
    int plantingOfSeedlings;
    int harvesting;
};
 
int main()
{
    srand(static_cast<unsigned int> (time(0)));
    setlocale(LC_ALL, "rus");
    
    plant carrot;
    cin >> carrot.name;
    cin >> carrot.whenPlantedMonth;
    cin >> carrot.plantingOfSeedlings;
    cin >> carrot.harvesting;
 
 
    system("pause");
    return 0;
}
1
4769 / 2579 / 892
Регистрация: 29.11.2010
Сообщений: 5,581
19.11.2021, 07:28 3
Цитата Сообщение от dmitriyscorp Посмотреть сообщение
Пример с морковкой
Норм.

Добавлю функциональности:
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
#include <iostream>
#include <istream>
#include <ostream>
#include <string>
#include <vector>
#include <algorithm>
 
struct plant {
    std::string name;
    int whenPlantedMonth;
    int plantingOfSeedlings;
    int harvesting;
};
 
// функция для ввода данных из потока.
// написана специфическим образом, чтоб можно было написать std::cin >> plant и было красиво.
// замечание -- в имени не должно быть пробела как хотите выкручивайтесь. )
std::istream &operator>>(std::istream &in, plant &p) {
    return in >> p.name >> p.whenPlantedMonth >> p.plantingOfSeedlings >> p.harvesting;
}
 
// функция для вывода данных в поток
// написана специфическим образом, чтоб можно было написать std::cout << plant и было красиво.
std::ostream &operator<<(std::ostream &out, const plant &p) {
    return out << "{name=" << p.name
            << ", whenPlantedMonth=" << p.whenPlantedMonth
            << ", plantingOfSeedlings=" << p.plantingOfSeedlings
            << ", harvesting=" << p.harvesting
            << "}";
}
 
// функция ввода списка объектов
std::istream &operator>>(std::istream &in, std::vector<plant> &plants) {
    while (in.good()) {
        plant p;
        in >> p;
        plants.push_back(p);
    }
    return in;
}
 
// функция вывода списка объектов
std::ostream &operator<<(std::ostream &out, const std::vector<plant> &plants) {
    for (const plant &p : plants) {
        out << p << std::endl;
    }
    return out;
}
 
 
 
int main() {
 
    // вместо этого можно написать std::ifstream in("filename") для чтения из файла
    auto &in = std::cin;
    // вместо этого можно написать std::ofstream in("filename") для записи в файл
    auto &out = std::cout;
 
    // оригинальный список
    std::vector<plant> plants;
    // ввод
    in >> plants;
    // вывод оригинального списка
    out << "Original: " << std::endl << plants;
 
    // тут будут храниться только растения, с датой сбора в августе
    std::vector<plant> august_plants;
    // копируем из оригинального списка в августовский список только те растения, у которых harvesting == 9.
    std::copy_if(plants.begin(), plants.end(), std::back_inserter(august_plants), [](const plant &p){
        return p.harvesting == 9;
    });
    // сортируем список августовских растений по имени растения в алфавитном порядке
    std::sort(august_plants.begin(), august_plants.end(), [](const plant &a, const plant &b) {
        return a.name < b.name;
    });
 
    // вывод отсортированного августовского списка
    std::cout << "August plants:" << std::endl << august_plants;
    return 0;
}
1
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
19.11.2021, 18:32  [ТС] 4
но тут ведь без сортировки по алфавиту?
0
4769 / 2579 / 892
Регистрация: 29.11.2010
Сообщений: 5,581
19.11.2021, 19:32 5
Цитата Сообщение от razeg0d Посмотреть сообщение
но тут ведь без сортировки по алфавиту?
Где? В каком коде без сортировки по алфавиту? В теме два поста с кодом.
В третьем посте, например, сортировка по алфавиту есть.
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
19.11.2021, 20:21  [ТС] 6
А можно оформить как-то попроще без istream и векторов? Я просто уже написал основную часть кода, мне осталось отсортировать по алфавиту
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
19.11.2021, 20:39 7
Вот с
Цитата Сообщение от razeg0d Посмотреть сообщение
основную часть кода
надо было начинать. Показывай, что зажал
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
19.11.2021, 20:50  [ТС] 8
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
#include <iostream>
using namespace std;
 
struct plant
{
    char vegetable_name;
    int WhenPlantedMonth;
    int plantingOfSeedlings;
    int harvesting;
}*spisok;
 
 
int main()
{
    setlocale(LC_ALL, "ru");
    int n;
    cout << "Введите количество различных наименований овощей: ";
    cin >> n;
    spisok = new plant[n];
    for (int i = 0; i < n; i++)
    {
        cout << "Введите название овощной культуры: ";
        cin >> spisok[i].vegetable_name;
        cout << "Введите номер месяца посева: ";
        cin >> spisok[i].WhenPlantedMonth;
        cout << "Введите номер месяца рассады: ";
        cin >> spisok[i].plantingOfSeedlings;
        cout << "Введите номер месяца сбора урожая: ";
        cin >> spisok[i].harvesting;
    }
 
 
}
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
19.11.2021, 22:35 9
ну давайТЕ введите сейчас 100 наименовании и посмотри что получилось. Потом повторите , а мы подождем. Тут полно подобных структур, организуй ввод из файла, вывод в файл. А потом и поможем с сортировкой
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
19.11.2021, 22:40  [ТС] 10
У меня тема структуры, а не файлы
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
19.11.2021, 23:01 11
Цитата Сообщение от razeg0d Посмотреть сообщение
Имеется список семян овощных культур.
задание об этом и говорит, где он имеется в файле( в бинарном, текстовом вам решать), или пока только в фантазиях?

Добавлено через 4 минуты
Если и ввод с файла организуешь, препод вернее вам за 2-3 задания по зачету поставит

Добавлено через 4 минуты
И в итоге конечный результат все таки будет вариант lemegeton,

Добавлено через 7 минут
вектор проходили, потоки изучали, сортировки были, чтение из файла тоже не проходили? а на кого тогда учитесь?
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
20.11.2021, 07:34 12
если еще сможете разобраться как работает 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
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <string.h>
#include <fstream>
using namespace std;
const int nmax = 100; //Максимальный размер массива, для хранения данных
 
struct plant
{
    char vegetable_name[30]; //название культуры
    int whenPlantedMonth;    //номера месяцев посева
    int plantingOfSeedlings; //номер месяца высадки рассады
    int harvesting;          //номер месяца уборки урожая
};
 
//Функция, выполняющая считывание данных из текстового файла и
int vvod(plant * spisok , int i = 0 )
{
  //Объявляем выходной поток и привязываем его к бинарному файлу
ifstream in;        // Объявляем входной поток для текстового файла
ofstream out("plantbin.dat", ios::binary);
//Объявляем выходной поток и привязываем его к бинарному файлу
in.open("plant.txt");
    plant st;
    if (in)
    {
        while (((!in.eof())))
        {
            in >> st.vegetable_name;
            in >> st.whenPlantedMonth;
            in >> st.plantingOfSeedlings;
            in >> st.harvesting;
            out.write((char*)&st,sizeof(plant));
            spisok[i] = st;
            i++;
        }
        in.close();
        out.close();    //Закрываем двоичный файл
    }
    else cout << "такого файла нет!" << endl;
    return i;
}
 
//Функция для вывода заголовка
void printTitul(string Titul){
     cout << Titul << endl;
    cout << setw(30) << left << "название культуры" << setw(20) << "номера мес. посева"
    << setw(20) << "номер мес. высадки" << setw(20) << "номер мес. уборки урожая" <<  endl;
}
 
void printSpisok(plant * spisok, int n )
{
    printTitul( "Исходная информация о культурах: ") ;
    for (int i = 0; i < n; i++)
    {
        cout << setw(30)<< spisok[i].vegetable_name << setw(20) << spisok[i].whenPlantedMonth
        << setw(20) << spisok[i].plantingOfSeedlings << setw(20) << spisok[i].harvesting  << endl;
     }
 }
 
void readFile(plant * spisok, int&n )
{
plant st;
ifstream in;    //Объявляем входной поток для двоичного файла и связываем поток с двоичным файлом
in.open("plantbin.dat", ios::binary);
if (in) //Если двоичный файл успешно открылся Будем распечатывать данные в виде таблицы
{
    // Считываем структуру целиком из двоичного файла
   in.read((char*)&st,sizeof(plant));
   while (!in.eof())   //Пока не конец двоичного файла
   {
       spisok[n++]=st;
       //Считываем следующую запись из файла
       in.read((char*)&st,sizeof(plant));
    }
    in.close();//Закрываем двоичный файл
    printSpisok(spisok, n);
  }
  else cout<<"Такого файла нет!";
}
 
//вывод информации обо всех культурах,убранных в заданный месяц, ввод с клавиатуры
void searcher(plant * spisok, int n)
{
    int d;
    cout << "Введите номер месяца уборки урожая " << endl;
    cin >> d;
    cin.ignore();
    printTitul( "Информации обо всех культурах убранных  : " );
// Считываем структуру целиком из двоичного файла
     for (int i = 0; i < n; i++)
    {
      if (spisok[i].harvesting  == d )
      {
            cout << setw(30)<< spisok[i].vegetable_name << setw(20) << spisok[i].whenPlantedMonth << setw(20) << spisok[i].plantingOfSeedlings << setw(20) <<
            spisok[i].harvesting  << endl;
       }
    }
 }
 
void dataPlantedMonth( plant * spisok, int n)
{
     int g;
     cout << "Введите искомый месяц посева" << endl;
     cin >> g;
     cin.ignore();
     printTitul( "Культуры посеяны в : " );
     for (int i = 0; i < n; i++)
     {
        if (spisok[i].whenPlantedMonth <= g)
            cout << setw(30)<< spisok[i].vegetable_name << setw(20) << spisok[i].whenPlantedMonth << setw(20)
            <<  spisok[i].plantingOfSeedlings<< setw(20) << spisok[i].harvesting  << endl;
     }
}
 
void sortName(plant spisok[], int n)
{
    plant temp;
     //Просматриваем все элементы массива
    for(int i = 0; i < n - 1; i++)
         for(int j = i + 1; j < n; j++)
         if(strcmp(spisok[i].vegetable_name,spisok[j].vegetable_name) > 0)
         {
            temp=spisok[i];
            spisok[i]=spisok[j];
            spisok[j]=temp;
         }
     printTitul( "Сортировка  по имени: " );
     printSpisok(spisok, n);
}
 
 int menu() { // -------------------------------------------------------- Вывод меню
    char buf[10];
    int option;
    do {
        puts("===========================================================");
        puts("1 - Ввод из txt файла \t 4 - корректировка сведений");
        puts("2 - удаление \t\t 5 - Чтение данных");
        puts("3 - поиск \t\t 6 - вывод базы \t\t ");
        puts("7 - поиск по мес. уборки 8 - сортировка по наимен.\t 9 - выход");
        gets(buf);
        option = atoi(buf);
    } while (!option);
    return option;
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    plant spisok[nmax];
    int k = 0;
    while (true) {
        switch (menu()) {
        case 1: k = vvod(spisok);
            break;
        case 2:
            break;
        case 3:  //поиск по месяцу посева
            dataPlantedMonth( spisok, k);
            break;
        case 4:
            break;
        case 5: readFile(spisok, k);
            break;
        case 6: printSpisok(spisok, k );
            break;
        case 7: cout << " Поиск по месяцу уборки : " << endl;
                searcher(spisok, k);
            break;
        case 8:             //сортировка массива данных по имени
            sortName(spisok, k);
            break;
        case 9:
            return 0;
        default: puts(" Надо вводить число от 1 до 9"); break;
        }
    }
    system("pause");
}
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.11.2021, 09:05 13
Цитата Сообщение от marat_miaki Посмотреть сообщение
Если и ввод с файла организуешь, препод вернее вам за 2-3 задания по зачету поставит
или незачёт за усложнение кода на ровном месте
Цитата Сообщение от razeg0d Посмотреть сообщение
А можно оформить как-то попроще без istream и векторов?
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
 
struct Vegetable
{
    string name;
    int month[3];
};
 
int main()
{    
    int n, p=0;
    cout << "n="; cin >> n;
    
    Vegetable* s = new Vegetable[n];
    
    for (int i = 0; i < n; i++)
    {
        cin.ignore();
        cout << "Vegetable " << i+1 << ":\n";        
        cout << "Name: ";
        getline(cin, s[i].name);
        cout << "Enter 3 month numbers: ";
        for (int j = 0; j < n; j++)
            cin >> s[i].month[j];        
    }
    
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - i - 1; j++)
            if (s[j].name > s[j+1].name) 
                swap(s[j],s[j+1]);
    
    cout << "RESULT:\n";            
    for (int i = 0; i < n; i++)    
        if (s[i].month[2]==8) {p=1;cout << setw(20) << left << s[i].name << "\n";}
        
    if(p==0) cout << "Not found vegetables getterling in august\n";    
     
    delete[]s;          
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
20.11.2021, 10:56  [ТС] 14
Учус
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
20.11.2021, 10:57  [ТС] 15
Тут возникла проблема какая-та:
Миниатюры
Вывести в алфавитном порядке названия культур, урожай которых убирается в августе  
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
20.11.2021, 10:58  [ТС] 16
Тут какая-та проблема возникла:
Миниатюры
Вывести в алфавитном порядке названия культур, урожай которых убирается в августе  
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
20.11.2021, 11:00  [ТС] 17
С вашим кодом вот:
Миниатюры
Вывести в алфавитном порядке названия культур, урожай которых убирается в августе  
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.11.2021, 14:11 18
razeg0d, подключите
C++
1
#include <string>
0
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 30
20.11.2021, 16:47  [ТС] 19
Спасибо огромное)

Добавлено через 3 минуты
А подскажите еще, для чего используется cin.ignore()?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.11.2021, 17:12 20
razeg0d, без cin.ignore() getline будет читать символ '\n' который остаётся в потоке от предыдущего cin, т.е. будет работать некорректно

заметил лишнее - уберите << setw(20) << left и строку 2
0
20.11.2021, 17:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2021, 17:12
Помогаю со студенческими работами здесь

Вывести в алфавитном порядке фамилии и инициалы студентов, отчества которых наиболее распространены
фамилии (в алфавитном порядке) и инициалы студентов, по отчеству которых наиболее распространены. ...

Вывести все слова строки, в которых больше одной заглавной буквы, в алфавитном порядке
Заранее спасибо за помощь. Выведите на экран все слова строки, в которых больше одной заглавной...

Вывести в алфавитном порядке список товаров, хранящихся более x месяцев, стоимость которых превышает y рублей
Доброго времени суток, товарищи помогите пожалуйста, задание звучит так: Программа предоставляет...

вывести на экран все слова строки в которых первая и последняя буква не совпадают в алфавитном порядке
вывести на экран все слова строки в которых первая и последняя буква не совпадают в алфавитном...

Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1 млн руб
привет, помогите пожалуйста написать программу: Список товаров, имеющихся на складе, включает в...

Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1000000 руб
Ребята, помогите пожалуйста. В программе предусмотреть сохранение вводимых данных в файле и...


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

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

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