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

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

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

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