Страница 1 из 1

Задача на нахождения столицы по стране

Добавлено: 21 дек 2014, 16:11
Arkass
Добрый день помогите написать программу в С++
завтра зачёт нужно принести её, буду очень признателен и благодарен.

Задание:
Напишите программу для любознательного, но туповатого путешественника, которая при наборе страны выдаст на экран столицу данной страны и количество народа, проживающего в ней. Данные для программы:
Страна Столица Население (млн. чел.)
Венгрия Будапешт 11
Италия Рим 60
Греция Афины 10
Турция Анкара 55
Египет Каир 53
Непал Катманду 18
Бельгия Брюссель 10

Зарание большое спасибо :rolleyes:

Re: Построить программу С++

Добавлено: 22 дек 2014, 01:26
Bce_OK
На вскидку, как-то так. Я не проверял

Код: Выделить всё

#include <iostream>
#define MAX_COUNTRY 7
struct country{
	char* name;
	char* capital;
	int demography;
	country (const char* n, const char c, const int d)
	{
		strcpy(name, n);
		strcpy(capital, c);
		demography = d;
	}
};

int main(int argc, char** argv)
{

	country countries[MAX_COUNTRY] = { 
					country("Венгрия", "Будапешт", 11),
					country("Италия", "Рим", 60),
					country("Греция", "Афины", 10),
					country("Турция", "Анкара", 55),
					country("Египет", "Каир", 53),
					country("Непал", "Катманду", 18),
					country("Бельгия", "Брюссель", 10)
				};
	std::cout<<"Введите страну: ";
	std::cin>>country_name;
	for(int i=0; i<MAX_COUNTRY; ++i)
	{
		if( strcmp(countries[i].name,country_name) == 0)
		{
			std::cout<<"Столица: "<<countries[i].capital<<std::endl;
			std::cout<<"Население: "<<countries[i].demography<<std::endl;
			return 0;

		}

	}
	std::cout<<"страна не найдена"<<std::endl;

	return 0;
}

Re: Построить программу С++

Добавлено: 22 дек 2014, 07:26
WinMain
В структуре country не выделяется память под строки. Программа будет падать.

Re: Построить программу С++

Добавлено: 22 дек 2014, 12:46
Romeo
Ещё в строке const char c пропущена звёздочка.

Но в любом случае писатель программы предупредил, что это навскидку. Топикстартер должен сам доработать программу и попутно разобраться почему так делать нельзя и как делать правильно :)

Re: Построить программу С++

Добавлено: 22 дек 2014, 17:06
Decoder
Поскольку все строковые значения в данном примере прописаны статически в программном коде, то в контексте данного примера память под строки в структуре country можно и не выделять, достаточно просто присвоить внутренним полям структуры соответствующие значения входных указателей. И этот пример заработает.
Но если делать как положено, то можно вместо функции strcpy вызывать функцию strdup. Ещё в структуру country нужно будет деструктор добавить, чтобы из него вызывать функции free для освобождения выделенной памяти.