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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2017, 23:45   #1
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
Печаль Почему в таблице 2 "relationship"=0, а не делится число докторов на число коек?

Код:
#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <locale.h> 
#include <string.h> 
#include <Windows.h> 

#define MAX_COUNTRY_ITEMS_CNT	4 
#define MAX_YEAR_ITEM_CNT		2

typedef struct
{
	int year;
	int doctors_cnt;
	int beds_cnt;
}
year_item_t;

typedef struct
{
	char name[16];
	year_item_t year_items[MAX_YEAR_ITEM_CNT];
}
country_item_t;

int main()
{
	setlocale(LC_ALL, "rus");
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	int countries_cnt = 0;
	int years_cnt = 0;
	country_item_t data[MAX_COUNTRY_ITEMS_CNT] = { 0 };

	do
	{
		printf("Введите количество республик:");
		scanf("%d", &countries_cnt);
		if (countries_cnt <= 0 || countries_cnt > MAX_COUNTRY_ITEMS_CNT)
			printf("Ошибка ввода\n");

	} while (countries_cnt <= 0 || countries_cnt > MAX_COUNTRY_ITEMS_CNT);

	do
	{
		printf("Введите количество данных по годам:");
		scanf("%d", &years_cnt);
		if (years_cnt <= 0 || years_cnt > MAX_YEAR_ITEM_CNT)
			printf("Ошибка ввода\n");

	} while (years_cnt <= 0 || years_cnt > MAX_YEAR_ITEM_CNT);

	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		fflush(stdin);
		printf("Введите республику:");
		scanf("%s", &data[country_i].name);

		for (int year_i = 0; year_i < years_cnt; year_i++)
		{
			printf("Год:");
			scanf("%d", &data[country_i].year_items[year_i].year);
			printf("Число врачей:");
			scanf("%d", &data[country_i].year_items[year_i].doctors_cnt);
			printf("Число коек:");
			scanf("%d", &data[country_i].year_items[year_i].beds_cnt);
		}
	}

	puts(
		"Исходная таблица данных\n" \
		"+------------+-------------------------+-------------------------+\n" \
		"|            |           1940          |           1960          |\n" \
		"| Республика +------------+------------+------------+------------+\n" \
		"|            |Число врачей| Число коек |Число врачей| Число коек |\n" \
		"+------------+------------+------------+------------+------------+"   \
	);
	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		printf("|%12.7s| %10.2f | %10.2f | %10.2f | %10.2f |\n", 
			 data[country_i].name
			,(float) data[country_i].year_items[0].doctors_cnt / 1000
			,(float) data[country_i].year_items[0].beds_cnt / 1000
			,(float) data[country_i].year_items[1].doctors_cnt / 1000
			,(float) data[country_i].year_items[1].beds_cnt / 1000
		);
		puts("+------------+------------+------------+------------+------------+");
	}
	puts(
		"2 таблица данных\n" \
		"+------------+-------------------------+---------+\n" \
		"|            |           1940          |         |\n" \
		"| Республика +------------+------------+---------+\n" \
		"|            |Число врачей| Число коек |Отношение|\n" \
		"+------------+------------+------------+---------+"   \
	    );
	int minimum=99999, relationship;
		for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		if(((float) data[country_i].year_items[0].doctors_cnt / (float) data[country_i].year_items[0].beds_cnt) < minimum)
		{
			minimum = country_i;
		}
	}
	  relationship=(float) data[minimum].year_items[0].doctors_cnt / (float) data[minimum].year_items[0].beds_cnt ;

	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		printf("|%12.7s| %10.2f | %10.2f |%9.2f|\n", 
			 data[country_i].name
			,(float) data[country_i].year_items[0].doctors_cnt / 1000
			,(float) data[country_i].year_items[0].beds_cnt / 1000
			,(float) relationship
		    );
		puts("+------------+------------+------------+---------+");
	}

    int minimum_doctors;
		printf("Введите минимальное число докторов:");
	    scanf("%d",&minimum_doctors);

 puts(
		"3 таблица данных\n" \
		"+------------+-------------------------+\n" \
		"|            |           1960          |\n" \
		"| Республика +------------+------------+\n" \
		"|            |Число врачей| Число коек |\n" \
		"+------------+------------+------------+"   \
	        );
	for (int country_i = 0; country_i < countries_cnt; country_i++)
{
	if ((float) data[country_i].year_items[1].doctors_cnt < minimum_doctors)
	{
		printf("|%12.7s| %10.2f | %10.2f |\n",
	          data[country_i].name
	          ,(float) data[country_i].year_items[1].doctors_cnt / 1000
	          ,(float) data[country_i].year_items[1].beds_cnt / 1000
	          ); 
	puts("+------------+------------+------------+");
	}
}
_getch();
return 0;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 14.12.2017 в 10:00.
Lucky_Vadim вне форума Ответить с цитированием
Старый 14.12.2017, 10:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы начал с того, что объявил relationship не целого типа, как это сделали Вы,
а вещественного:
Код:
float relationship;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2017, 13:49   #3
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
По умолчанию Почему теперь у меня выводится только одно значение "relationship_cnt", как сделать чтобы выводились все значения?

Код:
#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <locale.h> 
#include <string.h> 
#include <Windows.h> 

#define MAX_COUNTRY_ITEMS_CNT	4 
#define MAX_YEAR_ITEM_CNT		2

typedef struct
{
	int year;
	int doctors_cnt;
	int beds_cnt;
}
year_item_t;

typedef struct
{
	char name[16];
	year_item_t year_items[MAX_YEAR_ITEM_CNT];
}
country_item_t;

int main()
{
	setlocale(LC_ALL, "rus");
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	int countries_cnt = 0;
	int years_cnt = 0;
	country_item_t data[MAX_COUNTRY_ITEMS_CNT] = { 0 };

	do
	{
		printf("Введите количество республик:");
		scanf("%d", &countries_cnt);
		if (countries_cnt <= 0 || countries_cnt > MAX_COUNTRY_ITEMS_CNT)
			printf("Ошибка ввода\n");

	} while (countries_cnt <= 0 || countries_cnt > MAX_COUNTRY_ITEMS_CNT);

	do
	{
		printf("Введите количество данных по годам:");
		scanf("%d", &years_cnt);
		if (years_cnt <= 0 || years_cnt > MAX_YEAR_ITEM_CNT)
			printf("Ошибка ввода\n");

	} while (years_cnt <= 0 || years_cnt > MAX_YEAR_ITEM_CNT);

	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		fflush(stdin);
		printf("Введите республику:");
		scanf("%s", &data[country_i].name);

		for (int year_i = 0; year_i < years_cnt; year_i++)
		{
			printf("Год:");
			scanf("%d", &data[country_i].year_items[year_i].year);
			printf("Число врачей:");
			scanf("%d", &data[country_i].year_items[year_i].doctors_cnt);
			printf("Число коек:");
			scanf("%d", &data[country_i].year_items[year_i].beds_cnt);
		}
	}

	puts(
		"Исходная таблица данных\n" \
		"+------------+-------------------------+-------------------------+\n" \
		"|            |           1940          |           1960          |\n" \
		"| Республика +------------+------------+------------+------------+\n" \
		"|            |Число врачей| Число коек |Число врачей| Число коек |\n" \
		"+------------+------------+------------+------------+------------+"   \
	);
	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		printf("|%12.7s| %10.2f | %10.2f | %10.2f | %10.2f |\n", 
			 data[country_i].name
			,(float) data[country_i].year_items[0].doctors_cnt / 1000
			,(float) data[country_i].year_items[0].beds_cnt / 1000
			,(float) data[country_i].year_items[1].doctors_cnt / 1000
			,(float) data[country_i].year_items[1].beds_cnt / 1000
		);
		puts("+------------+------------+------------+------------+------------+");
	}
	float relationship_cnt=0;
	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		relationship_cnt=(float) data[country_i].year_items[0].doctors_cnt / (float) data[country_i].year_items[0].beds_cnt ;
	}
	puts(
		"2 таблица данных\n" \
		"+------------+-------------------------+---------+\n" \
		"|            |           1940          |         |\n" \
		"| Республика +------------+------------+---------+\n" \
		"|            |Число врачей| Число коек |Отношение|\n" \
		"+------------+------------+------------+---------+"   \
	    );
	for (int country_i = 0; country_i < countries_cnt; country_i++)    
{
	{
		printf("|%12.7s| %10.2f | %10.2f |%9.2f|\n", 
			 data[country_i].name
			,(float) data[country_i].year_items[0].doctors_cnt / 1000
			,(float) data[country_i].year_items[0].beds_cnt / 1000
			,(float) relationship_cnt
		    );
		puts("+------------+------------+------------+---------+");
	}
}

    int minimum_doctors;
		printf("Введите минимальное число докторов:");
	    scanf("%d",&minimum_doctors);

 puts(
		"3 таблица данных\n" \
		"+------------+-------------------------+\n" \
		"|            |           1960          |\n" \
		"| Республика +------------+------------+\n" \
		"|            |Число врачей| Число коек |\n" \
		"+------------+------------+------------+"   \
	        );
	for (int country_i = 0; country_i < countries_cnt; country_i++)
{
	if ((float) data[country_i].year_items[1].doctors_cnt < minimum_doctors)
	{
		printf("|%12.7s| %10.2f | %10.2f |\n",
	          data[country_i].name
	          ,(float) data[country_i].year_items[1].doctors_cnt / 1000
	          ,(float) data[country_i].year_items[1].beds_cnt / 1000
	          ); 
	puts("+------------+------------+------------+");
	}
}
_getch();
return 0;
}
Lucky_Vadim вне форума Ответить с цитированием
Старый 14.12.2017, 14:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Lucky_Vadim Посмотреть сообщение
Почему теперь у меня выводится только одно значение "relationship_cnt", как сделать чтобы выводились все значения?
так надо выводить там же, где Вы и вычисляете.
или вычислять там, где выводите:

Код:
	for (int country_i = 0; country_i < countries_cnt; country_i++)    
	{
		float relationship_cnt=(float) data[country_i].year_items[0].doctors_cnt / (float) data[country_i].year_items[0].beds_cnt ;
		printf("|%12.7s| %10.2f | %10.2f |%9.2f|\n", 
			 data[country_i].name
			,(float) data[country_i].year_items[0].doctors_cnt / 1000
			,(float) data[country_i].year_items[0].beds_cnt / 1000
			,(float) relationship_cnt
		    );
		puts("+------------+------------+------------+---------+");
	}


а это выкинуть
Цитата:
Сообщение от Lucky_Vadim Посмотреть сообщение
Код:
float relationship_cnt=0;
	for (int country_i = 0; country_i < countries_cnt; country_i++)
	{
		relationship_cnt=(float) data[country_i].year_items[0].doctors_cnt / (float) data[country_i].year_items[0].beds_cnt ;
	}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть две таблицы ("Клиенты" и "Заказы"). Как выбрать клиента, у которого самое большое число заказов? nadya06 SQL, базы данных 6 11.04.2020 10:41
[C++] В чём смысл, какой алгоритм такого задания: "С клавиатуры задать трёхзначное число, определить входит ли в него програмно заданное число "а"? ВениаминВ Помощь студентам 6 14.09.2017 18:11
Помогите исправить ошибку: вывести все "недопалиндромы" из указанного диапазона (от a до b). "недопалиндром" - число которое само не является палиндромов,но сумма его цифр является jeppa Паскаль, Turbo Pascal, PascalABC.NET 8 06.10.2016 10:57
"Число в p-ичной системе счисления. Перевести число в q-ичную систему" и не только :) Zinder Паскаль, Turbo Pascal, PascalABC.NET 4 10.04.2010 14:20
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43