Loading...
jvelev75 avatar jvelev75 2 Точки

Задчи от тема "Drawing Figures with Loops" - C++

  Здравейте,

имам две задачи от тази тема които чертаят фигурата от заданието - поне според мен.

Когато ги кача в Judge  се оценяват като грешни без да има подсkазване какво е сгрешено. Може ли някой да ми

даде насока къде е проблема.

Конкретно задачите са:

10.House

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int num;
	cin >> num;

	for (int i = 0; i < ((num + 1) / 2); i++)
	{ 
		if (num % 2 == 0)
		{
				int under = (num - 2 - i * 2) / 2;
				int star = 2 + i * 2;
				cout << string(under, '_');
				cout << string(star, '*');
				cout << string(under, '_');
				cout << endl;
				
		}
		else
		{
				int under = (num - 1 - i * 2) / 2;
				int star = 1 + i * 2;
				cout << string(under, '_');
				cout << string(star, '*');
				cout << string(under, '_');
				cout << endl;
		}
	}

	for (int i = 0; i < num / 2; i++)
	{
		cout << string(1, '|');
		cout << string((num - 2), '*');
		cout << string(1, '|');
		cout << endl;
	}


    return 0;
}

11.Diamond

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int num;
	cin >> num;
	int rows,mRow;
	
	if (num % 2 != 0)   //odd
	{
		rows = num;
		mRow = rows / 2 + 1;

		for (int i = 0; i < rows; i++)
		{
			if (i < mRow)
			{
				int sUnder = (num - 1) / 2 - i;
				int mUnder = 2 * i-1;

				if (i == 0)
				{
					cout << string(sUnder, '_');
					cout << string(1, '*');
					cout << string(sUnder, '_');
					cout << endl;
				}

				else
				{
					cout << string(sUnder, '_');
					cout << string(1, '*');
					cout << string(mUnder, '_');
					cout << string(1, '*');
					cout << string(sUnder, '_');
					cout << endl;
				}
			}
			else
			{
				
				int sUnder =i - mRow + 1;
				int mUnder = num+2*(mRow -i) - 4;

				if (i < rows - 1)
				{
					cout << string(sUnder, '_');
					cout << string(1, '*');
					cout << string(mUnder, '_');
					cout << string(1, '*');
					cout << string(sUnder, '_');
					cout << endl;

				}
				else
				{
					cout << string(sUnder, '_');
					cout << string(1, '*');
					cout << string(sUnder, '_');
					cout << endl;
				}

			}
		}


	}
	else          //even
	{
		rows = num-1;
		mRow = rows/2+1;


		for (int i = 0; i < rows; i++)
		{
			if (i < mRow)
			{
				int sUnder = (num - 2) / 2 - i;
				int mUnder = 2*i;
				
				cout << string(sUnder, '_');
				cout << string(1, '*');
				cout << string(mUnder, '_');
				cout << string(1, '*');
				cout << string(sUnder, '_');
				cout << endl;

			}
			else 
			{
				int sUnder = 1+i-mRow;
				int mUnder = 2 * (rows-i-1);


				cout << string(sUnder, '_');
				cout << string(1, '*');
				cout << string(mUnder, '_');
				cout << string(1, '*');
				cout << string(sUnder, '_');
				cout << endl;


			}
		}
	}

	


    return 0;
}

 

Благодаря предварително!!!

 

 

Тагове:
0
Programming Basics
kolioi avatar kolioi 641 Точки

И в двете задачи си използвал черта за подчертаване (underscore) '_', а трябва да е тире '-'. Така минават и двете със 100/100.

Може да съкратиш малко кода, например така

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int n;
	cin >> n;

	int k = (n - 1) / 2;

	for (int i = 0; i < k + 1; i++)
		cout << string(k - i, '-') << string(n - 2 * (k - i), '*') << string(k - i, '-') << '\n';

	for (int i = 0; i < n / 2; i++)
	{
		cout << '|';
		if (n > 2)
			cout << string(n - 2, '*');
		cout << "|\n";
	}

	return 0;
}

 

0
07/05/2018 22:02:44
jvelev75 avatar jvelev75 2 Точки

Здравейте,

благодаря и на двамата за отговора!

Наистина това е проблема.Не ми беше хрумвало.

Чисто визулано с '_' нещата бяха едно към едно.

Дори сега с '-' това което се появява на конзолата е различно

с показаното в doc файла.

Ще ми остане като полезен опит.

   Поздрави!

 

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.