Неправильно работает код [закрыт]

192
10 апреля 2019, 02:20

Вся база не выводится, выводятся только вторые введенные значения

#include "pch.h" 
#include <string> 
#include <iostream> 
#include <cstdlib> 
#include <conio.h> 
 
using namespace std; 
 
struct Weather //cтруктура "Погода" 
{ 
	string local; //район місцевості 
	int data; //дата 
	int count; //кількість опадів 
	double intensity; //інтенсивність опадів 
	double speed; //швидкість вітру 
	int temp; //середня температура  
	string direction; //напрямок вітру 
	string afternoon; //температура вдень 
	string night;//температура вночі 
} s[100]; 
int add(int n) //Добавление информации в базу 
{ 
	char ch; 
	do { 
		cout << "mestnost': " << endl; 
		cin >> s[n].local; 
		cout << "data: " << endl; 
		cin >> s[n].data; 
		cout << "\tosadki: \n" << endl; 
		cout << "kol-vo: "; 
		cin >> s[n].count; 
		cout << " intensivnost': " << endl; 
		cin >> s[n].intensity; 
		cout << "\tveter \n"; 
		cout << "skorost': " << endl; 
		cin >> s[n].speed; 
		cout << "napravlenie: " << endl; 
		cin >> s[n].direction; 
		cout << " srednya temperatura v techenii dnya: " << endl; 
		cin >> s[n].temp; 
		cout << "den': " << endl; 
		cin >> s[n].afternoon; 
		cout << "noch': " << endl; 
		cin >> s[n].night;	 
		system("cls"); 
		cout << "najmite lubuu klavishy chtobi prodolgit' krome y \n"; 
		cin >> ch; 
	} while (ch != 'y'); 
	return ++n; 
} 
void Out(int n) //Вывод базы 
{ 
	cout << "\t\t ________________________________" << endl; 
	cout << "\t\t|\tINFORM PRO BAZU:\t |"; 
	cout << "\n"; 
	cout << "\t\t|--------------------------------|" << endl; 
for (int i=0; i<n;i++) 
{ 
		cout << "\t\t|mestnost': " << s[i].local << "\t\t" << "|"; 
		cout << "\n\t\t|data: " << s[i].data << "\t\t \t |"; 
		cout << "\n\t\t|\tosadki: " << "\t         |"; 
		cout << "\n\t\t|kolichestvo: " << s[i].count << "\t\t" << " |"; 
		cout << "\n\t\t|intensivnost': " << s[i].intensity << "\t\t" << " |"; 
		cout << "\n\t\t| \tveter: " << "\t\t\t |" << "\t\t "; 
		cout << "\n"; 
		cout << "\t\t|skorost': " << s[i].speed << "\t\t\t" << " |"; 
		cout << "\n\t\t|napravlenie: " << s[i].direction << "\t\t" << " |"; 
		cout << "\n\t\t|sredneya  temperatura: " << s[i].temp << "\t |"; 
		cout << "\n\t\t|den': " << s[i].afternoon << "\t\t\t |"; 
		cout << "\n\t\t|noch: " << s[i].night << "\t\t\t |" << endl; 
		cout << "\t\t|________________________________|" << endl; 
	 
} 
 
	system("pause"); 
	system("cls"); 
} 
void t(int n) // Температура в местности с +10 
{ 
	int dat = 0; 
 
	cout << " vvedite daty: "; 
	cin >> dat; 
	for (int i = 0; i < n; i++) 
	{ 
		cout << "vivod inform \n" << endl; 
		if (s[i].data == dat && s[i].temp == +10) 
		{ 
			cout << "mestnost':  " << s[i].local << endl; 
		} 
		else 
			cout << "zdes' ne bilo temperaturi +10 " << endl; 
	} 
 
	system("pause"); 
	system("cls"); 
} 
void average(int n) //Среднее количество осадков 
{ 
	string loc; 
	int day; 
	cout << " dobavit' mestnost': "; 
	cin >> loc; 
	cout << "vvedite den': "; 
	cin >> day; 
	for (int i = 0; i < n; i++) 
	{ 
		if (s[i].local == loc) 
		{ 
 
			if (day != 0) // якщо виконується умова 
			{ 
				double precipitation = (double)s[i].count / day; 
				cout << "srednee kol-vo osadkov: " << precipitation << endl; 
			} 
			else 
				cout << "srednee kol-vo osadkov = 0" << endl; // якщо не виконується умова 
		} 
 
	} 
	system("pause"); 
	system("cls"); 
} 
void wind(int n) //Определение направления ветра 
{ 
	string locaal; 
	int date; 
	cout << "mestnost': " << endl; 
	cin >> locaal; 
	cout << "data: " << endl; 
	cin >> date; 
	for (int i = 0; i < n; i++) 
	{ 
		if (s[i].local == locaal) 
		{ 
			if (s[i].data == date) 
			{ 
				cout << "napravlenie bilo: " << s[i].direction << endl; 
				cout << " data: " << s[i].data << endl; 
			} 
			else 
				cout << "zdes' takogo net! " << endl; 
		} 
		else 
			cout << "error! " << endl; 
	} 
	system("pause"); 
} 
 
int main() 
{ 
 
	int n = 0; 
	while (1) 
	{ 
		cout << "\t\t\t\tMenu" << endl; 
		cout << "\t\t---------------------------------" << endl; 
		cout << "\t\t|\t1 - dobavit'\t\t|" << endl << 
			"\t\t|\t2 - vlya baza\t\t|" << endl << 
			"\t\t|\t3 - mestnost' gde 10\t|" << endl << 
			"\t\t|\t4 - srednie osadki\t|" << endl << 
			"\t\t|\t5 - napravlenie vetra\t|" << endl << 
			"\t\t|\t6 - exit\t\t|" << endl; 
		cout << "\t\t---------------------------------" << endl; 
		int a; cin >> a; 
		switch (a) 
		{ 
		case 1: 
			system("cls"); 
			n = add(n); 
			system("cls"); 
			break; 
		case 2: 
		 
			Out(n); 
			break; 
		case 3: 
			system("cls"); 
			t(n); 
			break; 
		case 4: 
			system("cls"); 
			average(n); 
			break; 
		case 5: 
			system("cls"); 
			wind(n); 
			system("cls"); 
			break; 
		case 6: 
		{exit(0); 
		default: 
			exit(0); 
		} 
		} 
	} 
	return 0; 
}

Answer 1

Ваша функция add позволяет ввести инфоpмацию для нескольких объектов, но счетчик увеличивает только один раз.

int add(int n) //Добавление информации в базу
{
    char ch;
    do {
        cout << "mestnost': " << endl;
        cin >> s[n].local;
        ...
        cout << "noch': " << endl;
        cin >> s[n].night;  
        n++;
        system("cls");
        cout << "najmite lubuu klavishy chtobi prodolgit' krome y \n";
        cin >> ch;
    } while (ch != 'y');
    return n;
}
READ ALSO
Сокращение строки в выводе

Сокращение строки в выводе

Пытаюсь изменить символ в строке на \0, чтобы выводить её не полностью (тк

163
Ошибка инициализации из-за метки case [дубликат]

Ошибка инициализации из-за метки case [дубликат]

На данный вопрос уже ответили:

242
Как вызвать одно окно из слота другого Qt

Как вызвать одно окно из слота другого Qt

q2 главное стартовое окноУ него есть кнопка QButton pushButton

188
Почему выводит 1?

Почему выводит 1?

Почему выводит 1?

167