Page 1 of 1

am o problema C++

Posted: 11 Jul 2017, 12:17
by Nubik1rus1
este un tabel, unde la fiecare cifra vin cate 3 litere https://cs7062.userapi.com/c637830/v637 ... ZXBa0I.jpg , nu stiu cum sa explic, trebue de scris numele in consola(sau cum se numeste, scuzati, nu demult am inceput sa invat c++) si sa dea raspuns ca pe aceasta imagine https://cs7062.userapi.com/c637830/v637 ... os_VSA.jpg
consola(sau cum se numeste, scuzati, nu demult am inceput sa invat c++) va conţine pe prima linie numele persoanei scris cu litere mici. Pe următoarele linii se va afişa piramida aceasta astfel:- cifrele de pe un rând al piramidei se vor afişa despărţite de câte un singur spaţiu;- primul rând de cifre al piramidei va fi aliniat la marginea din stânga, celelalte rânduri vor fi astfel afişate astfel încât să dea forma piramidei aşa cum este afişată în exemplul de mai sus.

Re: am o problema C++

Posted: 14 Jul 2017, 16:35
by mihaineken
Mai jos gasesti varianta mea.

Re: am o problema C++

Posted: 14 Jul 2017, 16:40
by mihaineken

Code: Select all

#include <iostream>
#include <iomanip>
#include <string>
#include <vector>

using namespace std;

int getNum(char &c)
{
	switch (c)
	{
	case 65: return 1;
	case 74: return 1;
	case 83: return 1;
	case 66: return 2;
	case 75: return 2;
	case 84: return 2;
	case 67: return 3;
	case 76: return 3;
	case 85: return 3;
	case 68: return 4;
	case 77: return 4;
	case 86: return 4;
	case 69: return 5;
	case 78: return 5;
	case 87: return 5;
	case 70: return 6;
	case 79: return 6;
	case 88: return 6;
	case 71: return 7;
	case 80: return 7;
	case 89: return 7;
	case 72: return 8;
	case 81: return 8;
	case 90: return 8;
	case 73: return 9;
	case 82: return 9;

	default: return 0;
	}
}

int getSum(int &n)
{
	int sum   = n;
	int digit = 0;

	if (n >= 10)
	{
		digit = n % 10;
		sum /= 10;
		sum += digit;
	}
	return sum;
}

void setOut(vector<int> &vi)
{
	int n = 1;
	while (vi.size() > 0)
	{
		cout << setw(n) << setfill(' ');
		for (size_t i = 0; i < vi.size(); i++)
		{
			cout << vi[i] << " ";
		}
		cout << endl;
		for (size_t i = 0; i < (vi.size() - 1); i++)
		{
			vi[i] += vi[i + 1];
			vi[i] = getSum(vi[i]);
		}
		vi.pop_back();
		n++;
	}
}

void arrange(string &str)
{
	vector<int> vi;
	char *c = new char [1];

	for (auto i : str)
	{
		*c = toupper(i);
		vi.push_back(getNum(*c));
	}
	delete c;
	cout << str << endl;
	setOut(vi);

	return;
}

int main()
{
	string s;

	cout << "Introduceti numele: ";
	cin >> s;

	arrange(s);

	system("PAUSE");
	return 0;
}

Re: am o problema C++

Posted: 15 Jul 2017, 19:15
by Nubik1rus1
mihaineken wrote:

Code: Select all

#include <iostream>
#include <iomanip>
#include <string>
#include <vector>

using namespace std;

int getNum(char &c)
{
	switch (c)
	{
	case 65: return 1;
	case 74: return 1;
	case 83: return 1;
	case 66: return 2;
	case 75: return 2;
	case 84: return 2;
	case 67: return 3;
	case 76: return 3;
	case 85: return 3;
	case 68: return 4;
	case 77: return 4;
	case 86: return 4;
	case 69: return 5;
	case 78: return 5;
	case 87: return 5;
	case 70: return 6;
	case 79: return 6;
	case 88: return 6;
	case 71: return 7;
	case 80: return 7;
	case 89: return 7;
	case 72: return 8;
	case 81: return 8;
	case 90: return 8;
	case 73: return 9;
	case 82: return 9;

	default: return 0;
	}
}

int getSum(int &n)
{
	int sum   = n;
	int digit = 0;

	if (n >= 10)
	{
		digit = n % 10;
		sum /= 10;
		sum += digit;
	}
	return sum;
}

void setOut(vector<int> &vi)
{
	int n = 1;
	while (vi.size() > 0)
	{
		cout << setw(n) << setfill(' ');
		for (size_t i = 0; i < vi.size(); i++)
		{
			cout << vi[i] << " ";
		}
		cout << endl;
		for (size_t i = 0; i < (vi.size() - 1); i++)
		{
			vi[i] += vi[i + 1];
			vi[i] = getSum(vi[i]);
		}
		vi.pop_back();
		n++;
	}
}

void arrange(string &str)
{
	vector<int> vi;
	char *c = new char [1];

	for (auto i : str)
	{
		*c = toupper(i);
		vi.push_back(getNum(*c));
	}
	delete c;
	cout << str << endl;
	setOut(vi);

	return;
}

int main()
{
	string s;

	cout << "Introduceti numele: ";
	cin >> s;

	arrange(s);

	system("PAUSE");
	return 0;
}
am pus codul acesta in codeblocks, si am primit 5 errori