Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2017, 12:36   #1
anasttb
Пользователь
 
Регистрация: 24.02.2017
Сообщений: 32
По умолчанию Необходимо обойти ошибку в if на проверку месяцев. Не понимаю совершенно как это сделать.

Код:
:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <clocale>
#include <Windows.h>
#include <locale>
using namespace std; 

struct date   //Объявление стркутуры
{
	int day;			//День	
	char month[60];	//Месяц
	int year;			//год
};

void show(const date obj[],int n);

int main()
{

	setlocale (0,"");
	SetConsoleCP(866);
	SetConsoleOutputCP(866);
	const int n=3;
	date arr[n]={};

	setlocale (LC_ALL, "Russian");
	for (int i=1;i<n+1;i++)
	{
		cout<<"\nДень:\t";
		cin>>arr[i].day;

		cout<<"\nМесяц:\t";
		cin.getline(arr[i].month,60);
		cin>>arr[i].month;

		cout<<"\nГод:\t";
		cin>>arr[i].year;

		cin.get();
	}
	show (arr,n);
	cout<<"\nРезультат поиска летних месяцев:\n";
	int c;
	for (int i=1;i<n+1;i++)
	{
		if ((arr[i].month == 'June' ) || (arr[i].month == 'July') || (arr[i].month=='August'))
		{
		cout<<"\nДень:\t"<<arr[i].day<<"\tМесяц:"<<arr[i].month<<"\t"<<"\tГод:\t"<<arr[i].year;
	    c=0;
		}
	}
			
	if (c!=0)
		cout <<"Нет результатов по поиску летних месяцев!";
	getch();		
}
void show(const date obj[],int n)
{
	for (int i=1;i<n+1;i++)
		cout<<"\nДень:\t"<<obj[i].day<<"\tМесяц:\t"<<obj[i].month<<"\tГод:\t"<<obj[i].year;
}
__
забыли завершающий тег [/code] поставить...
подробнее - FAQ
Модератор

Последний раз редактировалось Serge_Bliznykov; 26.05.2017 в 13:00.
anasttb вне форума Ответить с цитированием
Старый 26.05.2017, 12:39   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

В С++ чаровские строки так не сравнивают. Либо берите std::string, либо одну из функций семейства strcmp.
p51x вне форума Ответить с цитированием
Старый 26.05.2017, 16:01   #3
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

согласен

Там же строка должна быть "June", "July", "August".
А вовсе не символ. Один символ можно сравнить, а если строка - нужно либо специальную функцию использовать, либо вручную - по буквам.

Внутренние скобки в "if" можно убрать, они не влияют на результат.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 27.05.2017, 00:54   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Или используй по-элементное сравнение (на примере июля):
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <clocale>
#include <Windows.h>
#include <locale>
using namespace std;

struct date   //Объявление стркутуры
{
	int day;			//День	
	char month[60];	//Месяц
	int year;			//год
};

void show(const date obj[], int n);

int main()
{

	setlocale(0, "");
	SetConsoleCP(866);
	SetConsoleOutputCP(866);
	const int n = 4;
	date arr[n] = {};

	setlocale(LC_ALL, "Russian");
	
	arr[0].day = 5; strcpy(arr[0].month, "June"); arr[0].year = 2000;
	arr[1].day = 7; strcpy(arr[1].month, "August");   arr[1].year = 2001;
	arr[2].day = 4; strcpy(arr[2].month, "June");   arr[2].year = 2003;
	arr[3].day = 2; strcpy(arr[3].month, "July"); arr[3].year = 2040;
	
	show(arr, n);

	cout << "\nРезультат поиска летних месяцев:\n";
	int c;
	for (int i = 0; i < n; i++)
	{
		if (arr[i].month[0] == 'J' && arr[i].month[1] == 'u' && arr[i].month[2] == 'n' && arr[i].month[3] == 'e')
		{
			cout << "\nДень:\t" << arr[i].day << "\tМесяц:" << arr[i].month << "\t" << "\tГод:\t" << arr[i].year;
			c = 0;
		}
	}

	if (c != 0)
		cout << "Нет результатов по поиску летних месяцев!";

	cin >> c; //чтобы консоль не закрывалась
}
void show(const date obj[], int n)
{
	for (int i = 0; i < n; i++)
		cout << "\nДень:\t" << obj[i].day << "\tМесяц:\t" << obj[i].month << "\tГод:\t" << obj[i].year;
}
Кстате, а почему ты постоянно массив начинаешь читать с 1-цы до п (включительно)? ...
У меня постоянно ошибки выбивает на это...

p.s: заменил "getch();" на "cin >> c;", а то компилятор на него ругается.
ura_111 вне форума Ответить с цитированием
Старый 28.05.2017, 03:03   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 28.05.2017, 06:29   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

min@y™
В гугл "тос айы бельт., саг. месяц снимания бересты"
https://books.google.ru/books?id=5iL...%D1%8B&f=false
Croessmah вне форума Ответить с цитированием
Старый 28.05.2017, 11:27   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.05.2017, 05:53   #8
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

min@y™, а если оно пользователем вводится?
Да и вообще не поможет. У нас там:
Код:
if (arr[i].month[0] == 'J' && arr[i].month[1] == 'u' && arr[i].month[2] == 'n' && arr[i].month[3] == 'e')
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать проверку в реализации алгоритма Хаффмана - при кодировании строки "kkkkkkk" выдавать ошибку о том, что дерево не может быть создано Smile189 Паскаль, Turbo Pascal, PascalABC.NET 7 17.11.2016 22:25
с++ Необходимо чтобы программа работала не только с целыми, но и с дробными числами, как это сделать? в чем моя ошибка? Julia1 Общие вопросы C/C++ 2 20.04.2015 19:41
Помогите пожайлуста!!!Я не понимаю как это сделать Frolic Microsoft Office Word 1 11.11.2009 11:41
Как обойти проверку строки, при компиляции? Лукманов Александр Общие вопросы Delphi 3 03.05.2009 23:57