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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 19:46   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию С++: немного геометрии))

Вот еще одна задача школьного уровня. Убиты вчерашний вечер и сегодняшний день, а результат неправильный.

На прямоугольнике размера A × B размещено максимально возможное количество квадратов со стороной C, без наложений. Найти количество квадратов, размещенных на прямоугольнике. Используем только сложение, вычитание и цикл while.

Логическим путем было выведено, что для контрольных числел 9 и 9 (стороны якобы прямоугольника), в нем должно уместится 16 квадратов 2Х2. А мне моя программа упрямо твердит, что 4. Я не понимаю, то ли она на уровень вниз не спускается - если первый ряд уже занят, перейти на второй ряд, то ли она квадраты на разных уровнях не считает, то ли еще что.

Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>

using namespace std;

int main ()

{

double A=0, B=0, C=0;
int X=0;

cout<<"Vvedite A (bolshe 0): "<<endl;
cin>>A;
cout<<"Vvedite B (bolshe 0): "<<endl;
cin>>B;
cout<<"Vvedite C (bolshe 0): "<<endl;
cin>>C;

while((A>=C)&&(B>=C)) // Пока А и В больше или равны стороне эталонного квадрата

{
	while(A>=C) 
	{
		A=A-C; // Вычитаем из А длину квадрата, умненьшаея значение А
		X++; // Считаем наложенные квадраты
			if(A<C) // Если в ряд больше не помещается
			{ //Переходим на следующий уровень и уменьшаем высоту на сторону квадрата С  - то есть уменьшаем на один ряд
				B=B-C;
			}
	}
		
	// Это был пробный вариант
	/*while(B>=C)
	{
		B=B-C;
		X++;
	}*/
}
//Выводим итоговое количество квадратов
cout<<"Kolichestvo kvadratov: "<<X<<endl;

_getch ();
return 0;


}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 01.04.2011 в 20:03.
Blondy вне форума Ответить с цитированием
Старый 01.04.2011, 20:08   #2
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
#include <iostream>
using namespace std;


int main (){
	double a,a1;
	double b;
	double c;
	int count=0;
	cin>>a>>b>>c;
	
	a1=a;

	while( b >= c )
	{
		while(a >= c )
		{
			count++;
			a-=c;
		}
		
		b-=c;
		a=a1;
	}
	cout<<count<<endl;
}
двумя циклами считаем каждый квадратик

или даже так )
Код:
int main (){
	double a,b,c;
	int count=0;
	cin>>a>>b>>c;
	for (int a1=a; b>=c ; b-=c ,a=a1) 
	for (  ; a>=c ; a-=c ,count++);
	cout<<count<<endl;
}

Последний раз редактировалось Hemul; 01.04.2011 в 20:17.
Hemul вне форума Ответить с цитированием
Старый 01.04.2011, 20:20   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Hemul, неправильно вы считаете, там через площадь.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 01.04.2011, 20:24   #4
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Через красную площадь слабо посчитать?
Научите меня находить площадь сложением
А кстати да, цыклом мона площадь пощитать.
Присоединяюсь - там через красную площадь решение...

Последний раз редактировалось BoozZzilla; 01.04.2011 в 20:26.
BoozZzilla вне форума Ответить с цитированием
Старый 01.04.2011, 20:29   #5
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

эм , а чем мое решение неправильно ?
к тому же в цикле можно найти площадь только если у вас стороны как int
Hemul вне форума Ответить с цитированием
Старый 01.04.2011, 20:56   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Уважаемый Hemul, спасибо Вам!!! Сейчас буду смотреть код в действии и аддаптировать под свои переменные.
Мальчики, а что за красная площадь? Мы такого не проходили(((

Код замечательный, еще раз благодарю!
У меня только возник вопрос - у Вас объявлена переменная а1 - насколько я поняла из кода она задействована для определения остатка стороны А.. но она же у нас вообще не используется в программе. Или используется, просто я не понимаю как?

Дополнение чуть позже: методом практического тыка, я выяснила, что а1 имеет важное значение - если ее не добавлять мы опять возвращаемся при наших контрольных значениях к нашим 4 квадратам, вместо 16. Насколько я поняла - изначально остаток равен длине А, а в конце уже в нее помещается незанятая часть длины А - это своего рода указатель перехода на новую строку, да?))

Кстати, про площадь - я не совсем уверена, про ту ли площадь мы говорим, но у меня знакомые решали этот пример тоже через площадь и говорят, что считает неправильно.. он складывает незанятые части в одну общую площадь и тоже считает в ней квадраты.. хотя ее нельзя зарезервировать под квадраты, так как отдельные участки меньше чем эталонный квадрат
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Stilet; 02.04.2011 в 16:13.
Blondy вне форума Ответить с цитированием
Старый 02.04.2011, 07:34   #7
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

переменная a1 служит для восстановления значений a после того,как a отминусуется циклом, т.е. переменная а всегда постоянна и хранит в себе значение переменной a после cin>>a>>b>>c;
Hemul вне форума Ответить с цитированием
Старый 02.04.2011, 14:59   #8
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Уважаемый Hemul, я уже не стала Вас вчера дергать... я это поняла сама империческим путем - т.е. медотодом научного тыка (поработала с отладчиком немного).
Огромное вам благодарю!))))
Приходите на следующей неделе, меня ждет новая порция математических загадок. Как математика, все, сижу капитально.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Web-камера - распознавание геометрии объекта j777 Мультимедиа в Delphi 6 17.02.2011 15:18
Задача по геометрии (мат. методы) XYLIGANXYL Общие вопросы по Java, Java SE, Kotlin 5 12.02.2011 22:20
Задача по геометрии на С Matadora Помощь студентам 6 17.09.2010 10:09
Помогите решить задачу по геометрии Prototype Свободное общение 2 25.02.2008 21:24