am o problema C++

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++

am o problema C++

Mesajde Nubik1rus1 » 11 Iul 2017, 12:17

este un tabel, unde la fiecare cifra vin cate 3 litere https://cs7062.userapi.com/c637830/v637830137/56235/RUfiLZXBa0I.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/v637830137/5623c/PNW5Vos_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.
Nubik1rus1
Junior
Junior
 
Mesaje: 3
Membru din: 11 Iul 2017, 12:05

Re: am o problema C++

Mesajde mihaineken » 14 Iul 2017, 16:35

Mai jos gasesti varianta mea.
Ultima oară modificat de mihaineken pe 14 Iul 2017, 16:42, modificat 1 dată în total.
mihaineken
Junior
Junior
 
Mesaje: 3
Membru din: 14 Iul 2017, 16:34
Judet: Timiş

Re: am o problema C++

Mesajde mihaineken » 14 Iul 2017, 16:40

Cod: Selectaţi tot
#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;
}
Fişiere ataşate
Fără titlu.png
Fără titlu.png (23.06 KiB) Vizualizat de 133 ori
mihaineken
Junior
Junior
 
Mesaje: 3
Membru din: 14 Iul 2017, 16:34
Judet: Timiş

Re: am o problema C++

Mesajde Nubik1rus1 » 15 Iul 2017, 19:15

mihaineken scrie:
Cod: Selectaţi tot
#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
Nubik1rus1
Junior
Junior
 
Mesaje: 3
Membru din: 11 Iul 2017, 12:05


Înapoi la Limbajul C++

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 2 vizitatori

cron