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

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

Войти
Регистрация
Восстановить пароль
 
влад0
4 / 4 / 0
Регистрация: 22.05.2012
Сообщений: 120
#1

Не выводит в консоль результаты работы программы - C++

16.03.2014, 14:02. Просмотров 435. Ответов 4
Метки нет (Все метки)

Условие найти товар по стране используя структуры:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iomanip>
 
 
using namespace std;
ifstream fin;
 
struct tovar
{
    char name_prod;
    char country_prod;
    int number_prod;
};
 
 
 
void menu(int); //Функция выбора операции из меню
void close(void); //функция завершение программы
void program_search_country();//Программа поиска товара по названию страны
void read(int&);//Функция ввода
tovar *read(int, tovar*);//Перегрузка функции ввода
tovar *seeking_tovar(char,int,tovar*,tovar*);//Функция поиска товара по стране
void output(tovar*, int);//Функция вывода
int size_mas_b(char, int, tovar*);//Размер массива B 
 
int main()
{
    setlocale(0,"");
    int num_of_program=0;//Переменная для выбора операции из меню
    cout<<"Что вы хотите сделать?\n\t1.Поиск товара производителя\n\t2.Вывод общего кличества товара\n\t0.Выход из программы\nВаш выбор: ";
    cin>>num_of_program;//Ввод значения переменной для выбора операции
    menu(num_of_program);//Вызов фунции меню
    close();
    return 0;
}
 
void menu(int num)
{
    system("cls");//Очистка экрана
    switch (num)
    {
    case 1:{program_search_country(); break;}
    case 2:{/*Общее количество товара*/break;}
    case 0:{close(); break;}
    default:
        {
            main();
            break;
        }
    }
}
 
void close(void)
{
    system("cls"); //Очистка экрана
    cout<<"Спасибо за использование программы!\n"; 
    system("pause"); //Задержка окна
}
 
 
void program_search_country()
{
    int count_a;//Переменная для количества товара
    char seeking_country;
    read(count_a);//Вызов функции считывания данных(колличсетва).
    tovar *A = new tovar[count_a]; //Весь товар
    read(count_a, A);
    cout<<"\n\tПОИСК ТОВАРА ПО СТРАНЕ ПРОИЗВОДИТЕЛЮ\n\nВведите название страны: ";
    cin>>seeking_country;//Ввод искомой страны
    int count_b=size_mas_b(seeking_country, count_a, A);
    tovar *B = new tovar[count_b]; //Искомый товар
    seeking_tovar(seeking_country, count_a, A, B); //Операция поиска товара
    output(B, count_b);
    system("pause");
;
} 
void read(int &c)//
{
    fin.open("input.txt");
    fin>>c;
    fin.close();
}
tovar *read(int c, tovar *a)
{
    fin.open("input.txt");
    for (int i=0; i<c; i++)
    {
        fin>>a[i].name_prod>>a[i].country_prod>>a[i].number_prod;
    }
    fin.close();
    return a;
}
 
 
 
tovar *seeking_tovar(char sc, int c, tovar *a, tovar *b) //название страны, количество товара
{
    for(int i=0; i<c;i++)
    {
        if (sc==a[i].country_prod)
        {
            b[i].name_prod=a[i].name_prod;
            b[i].country_prod=a[i].country_prod;
            b[i].number_prod=a[i].number_prod;
        }
        else 
            b=0;
    }
    return b;
}
int size_mas_b(char sc, int c, tovar *a)
{
    int size=0;
    for(int i=0; i<c;i++)
    {
        if (sc==a[i].country_prod)
        {
            size++;
        }
    }
    return size;
}
 
void output(tovar* b, int c)
{
    cout<<"Результаты поиска: \n";
    if (b==0)
        cout<<"\n\tНичего не найдено!";
    else
    {
        for(int i=0; i<c;i++)
        {
            cout<<"\t"<<i+1<<")."<<setw(15)<<b[i].name_prod<<" ["<<b[i].number_prod<<"] \n";
        }
    }
 
}
Содержимое input.txt:
Кликните здесь для просмотра всего текста
6
Banana Egypt 300
Orandge Australia 755
Potato Ukraine 3860
Beet Russia 1600
Carrot Russia 2576
Watermelon Ukraine 400


Собственно предпологалось что после "Результаты поиска:" будут сами результаты поиска... НУ или сообщение "Ничего не найдено" а оно вот так:
Не выводит в консоль результаты работы программы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 14:02     Не выводит в консоль результаты работы программы
Посмотрите здесь:

C++ Консоль не вмещает результаты
C++ Результаты выполнения программы не помещаются в консоль
C++ Не выводит Hello World в консоль
C++ Запускаеться только консоль результаты не показывает,что нужно исправить?
Не выводит текст в консоль C++
Криво выводит результаты программы в файл C++
C++ запускается консоль и ничего не выводит
Программа которая выводит два наибольших числа из десяти введенных. Пожалуйста объясните суть работы программы C++
Функция не выводит результат на консоль (таблица истинности) C++
C++ Code::Blocks не выводит текст в консоль
C++ Программа которая выводит крест на экран (консоль)
Не выводит информацию в консоль C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
влад0
4 / 4 / 0
Регистрация: 22.05.2012
Сообщений: 120
16.03.2014, 17:47  [ТС]     Не выводит в консоль результаты работы программы #2
Неужели никто не знает?
zss
Модератор
Эксперт С++
 Аватар для zss
6130 / 5733 / 1855
Регистрация: 18.12.2011
Сообщений: 14,656
Завершенные тесты: 1
16.03.2014, 17:55     Не выводит в консоль результаты работы программы #3
Цитата Сообщение от влад0 Посмотреть сообщение
cin>>seeking_country;//Ввод искомой страны
вводит символ, на который указывает поток ввода.
Если перед этим вводилось число, то поток указывает на символ конца строки.
Он то и считывается. Соответственно и сравнение не выполняется.
влад0
4 / 4 / 0
Регистрация: 22.05.2012
Сообщений: 120
16.03.2014, 18:08  [ТС]     Не выводит в консоль результаты работы программы #4
Я не понял как решать сею проблему...
zss
Модератор
Эксперт С++
 Аватар для zss
6130 / 5733 / 1855
Регистрация: 18.12.2011
Сообщений: 14,656
Завершенные тесты: 1
16.03.2014, 18:29     Не выводит в консоль результаты работы программы #5
Цитата Сообщение от влад0 Посмотреть сообщение
Я не понял как решать сею проблему...
После ввода числа надо либо сбросить поток, либо зачитать этот символ
во временную char переменную.
Yandex
Объявления
16.03.2014, 18:29     Не выводит в консоль результаты работы программы
Ответ Создать тему
Опции темы

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