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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2010, 08:07   #1
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию найти количество кубиков данного цвета и их суммарный обьем?

Хорошая Задача кому интересно посмотрите?
Задача такая
дан файл F
содержащий сведения о кубиках:размер(длина его ребра)его цвет и материал
найти количествокубиков данного цвета и хи скммарный обьем?
я сделал базу данных
состоящие из кубиков
в ней содержется размер(длина его ребра)его цвет и материал
сделал вводишь цвет он находит его в базе а вот как посчитать их суммарный обьем при этом не знаю может кто подскажет?
Код:
#define _CRT_SECURE_NO_DEPRECATE
 
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>

struct block {
	int number;
	char color[16];
	char mat[16];
	unsigned int rbr;
};

FILE *f;

void menu(void) {
	printf(
		"\n"
		"1. Добавление кубиков.\n"
		"2. Список Кубиков .\n"
		"3. Поиск кубика.\n"
		"9. Выйти.\n\n"
	);
}

int main() {
	setlocale( LC_ALL, "Russian" );
	
	// Открытие файла ------------------------------
	f = fopen( "kub.dat", "ab+" );
	if( f == NULL )
	{
		printf( "Не могу открыть 'kub.dat'. Нажмите клавишу...\n" );
		_getch();
		return -1;
	}
	menu();

	char c;
	while(true) {
		printf( "\rВыберите режим работы: " );
		c = _getche();
		block t;
		switch (c) {
			case '1': // Добавление 
				printf( "\n\nПополнение списка 'kub.dat'.\n"
						"Для выхода в главное меню введите 0 .\n\n" );
				fseek( f, 0, SEEK_END );
				while( true )  {
					printf( "Номер: " );
					scanf_s( "%d", &t.number );
					if( t.number==0 ) break;

					printf( "Цвет: " );
					scanf_s( "%15s%*[^\n]5000s", t.color, 16 );
					if( t.color[0]=='0' ) break;

					printf( "Материал: " );
					scanf_s( "%15s%*[^\n]5000s", t.mat, 16 );
					if( t.mat[0]=='0' ) break;

					printf( "Длина Ребра: " );
					scanf_s( "%d", &t.rbr );
					if( t.rbr==0 ) break;

					fwrite( &t, sizeof(t), 1, f );
					printf( "Информация добавлена.\n\n" );
				}
				menu();
				break;
			case '2': // Просмотр 
				printf(
					"\n\nСписок Кубиков 'kub.dat'\n\n"
					"\tНомер:      \tЦвет:       \tМатериал:    \tДлина ребра:\n" );
				fseek( f, 0, SEEK_SET );
				setlocale( LC_ALL, ".866" );
				while( true ) {
					if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
					printf( "\t%d\t\t%-15s\t%-15s\t%d\n",&t.number,t.color, t.mat, &t.rbr );//"\t%-15s\t%d\n"//
							}
				setlocale( LC_ALL, ".1251" );
				menu();
				break;
			case '3': // Поиск 
				printf(	"\n\nПоиск кубика по его цвету 'kub.dat'\n\n" );
				char s[16];
				/*int sum;
				double h;
				double v;*/
				printf( "Введите цвет: " );
				scanf_s( "%15s%*[^\n]5000s", s, 16 );

				printf(	"\tНомер:      \tЦвет:    \tДлина ребра:\n" );
				fseek( f, 0, SEEK_SET );
				setlocale( LC_ALL, ".866" );
				while( true ) {
					if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
					if( strstr( t.color, s ) != NULL )
						printf( "\t%d\t\t%-15s\t%d\n",&t.number,t.color,&t.rbr);
				}
				setlocale( LC_ALL, ".1251" );
				menu();
				break;
			case '9': // Выход ---------------------------------------
				fclose(f);
				return 0;
		}
	}
}

Последний раз редактировалось Stilet; 09.03.2010 в 13:20.
Alex_sim вне форума Ответить с цитированием
Старый 05.03.2010, 08:11   #2
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

Код:
#define _CRT_SECURE_NO_DEPRECATE
 
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>

struct block {
	int number;
	char color[16];
	char mat[16];
	unsigned int rbr;
};

FILE *f;

void menu(void) {
	printf(
		"\n"
		"1. Добавление кубиков.\n"
		"2. Список Кубиков .\n"
		"3. Поиск кубика.\n"
		"9. Выйти.\n\n"
	);
}

int main() {
	setlocale( LC_ALL, "Russian" );
	
	// Открытие файла ------------------------------
	f = fopen( "kub.dat", "ab+" );
	if( f == NULL )
	{
		printf( "Не могу открыть 'kub.dat'. Нажмите клавишу...\n" );
		_getch();
		return -1;
	}
	menu();

	char c;
	while(true) {
		printf( "\rВыберите режим работы: " );
		c = _getche();
		block t;
		switch (c) {
			case '1': // Добавление 
				printf( "\n\nПополнение списка 'kub.dat'.\n"
						"Для выхода в главное меню введите 0 .\n\n" );
				fseek( f, 0, SEEK_END );
				while( true )  {
					printf( "Номер: " );
					scanf_s( "%d", &t.number );
					if( t.number==0 ) break;

					printf( "Цвет: " );
					scanf_s( "%15s%*[^\n]5000s", t.color, 16 );
					if( t.color[0]=='0' ) break;

					printf( "Материал: " );
					scanf_s( "%15s%*[^\n]5000s", t.mat, 16 );
					if( t.mat[0]=='0' ) break;

					printf( "Длина Ребра: " );
					scanf_s( "%d", &t.rbr );
					if( t.rbr==0 ) break;

					fwrite( &t, sizeof(t), 1, f );
					printf( "Информация добавлена.\n\n" );
				}
				menu();
				break;
			case '2': // Просмотр 
				printf(
					"\n\nСписок Кубиков 'kub.dat'\n\n"
					"\tНомер:      \tЦвет:       \tМатериал:    \tДлина ребра:\n" );
				fseek( f, 0, SEEK_SET );
				setlocale( LC_ALL, ".866" );
				while( true ) {
					if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
					printf( "\t%d\t\t%-15s\t%-15s\t%d\n",&t.number,t.color, t.mat, &t.rbr );//"\t%-15s\t%d\n"//
							}
				setlocale( LC_ALL, ".1251" );
				menu();
				break;
			case '3': // Поиск 
				printf(	"\n\nПоиск кубика по его цвету 'kub.dat'\n\n" );
				char s[16];
				/*int sum;
				double h;
				double v;*/
				printf( "Введите цвет: " );
				scanf_s( "%15s%*[^\n]5000s", s, 16 );

				printf(	"\tНомер:      \tЦвет:    \tДлина ребра:\n" );
				fseek( f, 0, SEEK_SET );
				setlocale( LC_ALL, ".866" );
				while( true ) {
					if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
					if( strstr( t.color, s ) != NULL )
						printf( "\t%d\t\t%-15s\t%d\n",&t.number,t.color,&t.rbr);
				}
				setlocale( LC_ALL, ".1251" );
				menu();
				break;
			case '9': // Выход ---------------------------------------
				fclose(f);
				return 0;
		}
	}
}
Alex_sim вне форума Ответить с цитированием
Старый 09.03.2010, 13:00   #3
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

Хорошая Задача кому интересно посмотрите?
Задача такая
дан файл F
содержащий сведения о кубиках:размер(длина его ребра)его цвет и материал
найти количествокубиков данного цвета и хи скммарный обьем?
я сделал базу данных
состоящие из кубиков
в ней содержется размер(длина его ребра)его цвет и материал
сделал вводишь цвет он находит его в базе а вот как посчитать их суммарный обьем при этом не знаю может кто подскажет?
Alex_sim вне форума Ответить с цитированием
Старый 09.03.2010, 13:19   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Объем куба равен длина его стороны в кубе(в 3 степени).
Перебираешь все кубики и прибавляешь к результату длину ребра текущего кубика в кубе.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.03.2010, 13:26   #5
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

спасибо конечно но я это знаю вы меня просто не поняли
вводишь цвет кубика он тебе находит все кубики с данным цветом
и его длину ребра как при этом посчитать их суммарный обьем?
Alex_sim вне форума Ответить с цитированием
Старый 09.03.2010, 13:30   #6
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

как это коде будет выглядеть?
Alex_sim вне форума Ответить с цитированием
Старый 09.03.2010, 13:46   #7
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Держи..с локалями сам тут разбирайся
Код:
#define _CRT_SECURE_NO_DEPRECATE
 
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>

struct block {
	int number;
	char color[16];
	char mat[16];
	unsigned int rbr;
};

FILE *f;

void menu(void) {
	printf(
		"\n"
		"1. Добавление кубиков.\n"
		"2. Список Кубиков .\n"
		"3. Поиск кубика.\n"
		"9. Выйти.\n\n"
	);
}

int main() {
	setlocale( LC_ALL, "Russian" );
	
	// Открытие файла ------------------------------
	f = fopen( "kub.dat", "ab+" );
	if( f == NULL )
	{
		printf( "Не могу открыть 'kub.dat'. Нажмите клавишу...\n" );
		_getch();
		return -1;
	}
	int ans;
	menu();

	char c;
	while(true) {
		printf( "\rВыберите режим работы: " );
		c = _getche();
		block t;
		switch (c) {
			case '1': // Добавление 
				printf( "\n\nПополнение списка 'kub.dat'.\n"
						"Для выхода в главное меню введите 0 .\n\n" );
				fseek( f, 0, SEEK_END );
				while( true )  {
					printf( "Номер: " );
					scanf_s( "%d", &t.number );
					if( t.number==0 ) break;

					printf( "Цвет: " );
					scanf_s( "%15s%*[^\n]5000s", t.color, 16 );
					if( t.color[0]=='0' ) break;

					printf( "Материал: " );
					scanf_s( "%15s%*[^\n]5000s", t.mat, 16 );
					if( t.mat[0]=='0' ) break;

					printf( "Длина Ребра: " );
					scanf_s( "%d", &t.rbr );
					if( t.rbr==0 ) break;

					fwrite( &t, sizeof(t), 1, f );
					printf( "Информация добавлена.\n\n" );
				}
				menu();
				break;
			case '2': // Просмотр 
				printf(
					"\n\nСписок Кубиков 'kub.dat'\n\n"
					"\tНомер:      \tЦвет:       \tМатериал:    \tДлина ребра:\n" );
				fseek( f, 0, SEEK_SET );
				setlocale( LC_ALL, ".866" );
				while( true ) {
					if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
					printf( "\t%d\t\t%-15s\t%-15s\t%d\n",t.number,t.color, t.mat, t.rbr );//"\t%-15s\t%d\n"//
							}
				setlocale( LC_ALL, ".1251" );
				menu();
				break;
			case '3': // Поиск 
				printf(	"\n\nПоиск кубика по его цвету 'kub.dat'\n\n" );
				char s[16];
				ans = 0;
				/*int sum;
				double h;
				double v;*/
				printf( "Введите цвет: " );
				scanf_s( "%15s%*[^\n]5000s", s, 16 );

				printf(	"\tНомер:      \tЦвет:    \tДлина ребра:\n" );
				fseek( f, 0, SEEK_SET );
				setlocale( LC_ALL, ".866" );
				while( true ) {
					if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
					if( strstr( t.color, s ) != NULL )
					{
						printf( "\t%d\t\t%-15s\t%d\n",t.number,t.color,t.rbr);
						ans +=	(t.rbr*t.rbr*t.rbr);
					}
				}
				printf("Суммарный объем найденных кубиков : %d\n",ans);
				setlocale( LC_ALL, ".1251" );
				menu();
				break;
			case '9': // Выход ---------------------------------------
				fclose(f);
				return 0;
		}
	}
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.03.2010, 13:48   #8
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
Хорошо респект

спасибочки )))))))
Alex_sim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
суммарный отбор Alexi БД в Delphi 9 15.04.2009 15:26
Реализация кубиков egyd Помощь студентам 5 09.02.2009 22:42
найти пиксел определённого цвета prizrak1390 Общие вопросы Delphi 12 25.04.2008 14:57
Найти количество различных цифр данного натурального числа. stalker Паскаль, Turbo Pascal, PascalABC.NET 10 22.05.2007 17:45