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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 17:20   #1
Sunori
 
Регистрация: 19.12.2011
Сообщений: 7
По умолчанию C++.Структура

Задача:Ввести данные о численности населения (млн. жителей) и площади (кв.км) для нескольких государств, для этого использовать структуру. Определить название государства с минимальной плотностью населения.

Код:
Цитата:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <cstdlib>
using namespace std;
const int n=8;

int main()
{
int w;
setlocale(LC_ALL,"russian_russia");

struct search{
char* country; //Название государства
float population; //Численость населения
float area; //Площадь
};
cout<<"Введите кол-во вводимых стран ";
cin>>w;
search *a = new search [w];
for (int i=0; i<w; i++){
cout<<"Название государства: ";
char s[50];
cin>>s;
a[i].country = new char[strlen(s)+1];
strcpy(a[i].country,s);

cout<<"Площадь страны(кв.км): ";
cin>>a[i].area;

cout<<"Численость населения(млн. жителей): ";
cin>>a[i].population;
cout<<'\n';
{
float d=0;
d=a[i].population/a[i].area;
cout<<"Плотность населения: "<<d<<'\n';
}
}

getch();
return 0;
}
как вывести название название государства с минимальной плотностью населения?
Sunori вне форума Ответить с цитированием
Старый 19.12.2011, 21:18   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Sunori Посмотреть сообщение
как вывести название название государства с минимальной плотностью населения?
Очевидно, для всех структур разделить величину площади государства на численность населения, и вывести название государства, для которого это значение максимально
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 20.12.2011, 10:20   #3
Sunori
 
Регистрация: 19.12.2011
Сообщений: 7
По умолчанию

а по подробнее?
напиши пожалуйста кусочек кода
если не сложно

Последний раз редактировалось Sunori; 20.12.2011 в 10:25.
Sunori вне форума Ответить с цитированием
Старый 20.12.2011, 12:15   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Код:
#include <iostream>
#include <list>
#include <string>

struct State
{
  std::string Name;
  double Population;
  double Area;
};

typedef std::list<State> StateList;

std::string MinimumPopulationDensity(const StateList& sources)
{
  std::string result;
  double max = 0;
  for (StateList::const_iterator it = sources.begin(); it != sources.end(); ++it)
  {
    double current = it->Area / it->Population;
    if (current > max)
    {
      max = current;
      result = it->Name;
    }
  }

  return result;
}

int main()
{
  StateList states;
  // заполнить список

  std::cout << "result: " << MinimumPopulationDensity(states) << std::endl;
}
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 20.12.2011 в 12:20.
Blade вне форума Ответить с цитированием
Старый 24.12.2011, 16:41   #5
Sunori
 
Регистрация: 19.12.2011
Сообщений: 7
По умолчанию

Выложите пожалуйста полный рабочий вариант если не сложно

у меня ничего не получается(
Sunori вне форума Ответить с цитированием
Старый 24.12.2011, 16:43   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Что не получается? Мой вариант полностью рабочий.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 24.12.2011, 16:49   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Blade, не стебись)

Что-то такое
Код:
int max_index = 0;
for (int i = 1; i < w; ++i) 
    if (a[i].population/a[i].area < a[max_index].population/a[max_index].area) max_index = i;
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 24.12.2011, 16:50   #8
Sunori
 
Регистрация: 19.12.2011
Сообщений: 7
По умолчанию

не могу разобраться с вводом данных в структуру



некогда не думал что на заочке так тяжело учится
Sunori вне форума Ответить с цитированием
Старый 24.12.2011, 16:52   #9
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

А что не так с вводом данных?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 24.12.2011, 18:44   #10
Sunori
 
Регистрация: 19.12.2011
Сообщений: 7
По умолчанию

Цитата:
#include <iostream>
#include <list>
#include <string>

struct State
{
std::string Name;
double Population;
double Area;
};

typedef std::list<State> StateList;

std::string MinimumPopulationDensity(const StateList& sources)
{
std::string result;
double max = 0;
for (StateList::const_iterator it = sources.begin(); it != sources.end(); ++it)
{
double current = it->Area / it->Population;
if (current > max)
{
max = current;
result = it->Name;
}
}

return result;
}

int main()
{
StateList states;
// заполнить список

std::cout << "result: " << MinimumPopulationDensity(states) << std::endl;
}
не могу разобраться как ввести количество стран с клавы
ничего в структурах не понимаю
как и в с++ =(
Sunori вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структура на си(си++) Ислам Помощь студентам 10 29.06.2011 19:54
Структура с++ Елена_05 Общие вопросы C/C++ 10 30.05.2011 22:46
структура hungry Общие вопросы C/C++ 11 25.06.2009 20:31
структура Cpluser Общие вопросы C/C++ 4 16.06.2009 17:42
Структура IF в С++ lebrosha Помощь студентам 3 22.05.2009 00:09