По поводу грибов.
Если я правильно понимаю код, то:
Цитата:
while (true)
{
octatok=octatok%10;
if (octatok<9)break;
}
|
1. при числе оканчивающимся на "9" войдёт в бесконечный цикл
2. octatok%10 всегда будет < 10
поэтому логичнее будет написать вместо этого куска кода строчку:
Потом - если число равно "12", "13", "14" нужно выводить "грибов", а будет "гриба".
Предлагаю свой вариант:
Код:
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int k;
cout << "Введите количество грибов: ";
cin >> k;
cout << "Мы собрали: " << tmp << k << " ";
if ((k > 10) && (k < 20))
cout << "грибов";
else
{
k %= 10;
if (k == 1)
cout << "гриб";
else if ((k == 2) || (k == 3) || (k == 4))
cout << "гриба";
else
cout << "грибов";
}
}
Или, в случае если кодировка редактора и кодировка консоли различны и это Windows, то с перекодировкой:
Код:
#include <windows.h>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int k;
char tmp[256];
CharToOem("Введите количество грибов: ", tmp);
cout << tmp;
cin >> k;
CharToOem("Мы собрали: ", tmp);
cout << tmp << k << " ";
if ((k > 10) && (k < 20))
CharToOem("грибов", tmp);
else
{
k %= 10;
if (k == 1)
CharToOem("гриб", tmp);
else if ((k == 2) || (k == 3) || (k == 4))
CharToOem("гриба", tmp);
else
CharToOem("грибов", tmp);
}
cout << tmp << "\n";
}