Определить количество цифр в числе
|
|
student | Дата: Пятница, 02.05.2014, 14:17 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Дано натуральное число n (n<10000). Определить сколько цифр в числе, найти первую цифру числа,найти предпоследнюю цифра числа. P.s Только важное условие чтобы при невыполнении условий, программа не работала. А также оформить с помощью классов. Мне сказали переделать этот код на язык си(printf, scanf и что то в этом роде), но я понятие не имею как это сделать. Вот собственно код который у меня получился: //--------------------------------------------------------------------------- #include #include #include #include using namespace std;
//--------------------------------------------------------------------------- class MyInt { int Max, countN; char tmp_str[50]; public: //----------------------------------- MyInt(unsigned int MaxSize) { Max = MaxSize; } //----------------------------------- bool ScanButtons(const char* Msg) { countN = 0; memset(tmp_str, 0, 50); char tmp_c; cout << Msg; do { tmp_c = getch(); if(isdigit(tmp_c)) { cout << tmp_c ; tmp_str [countN]= tmp_c; if(atoi(tmp_str) > Max) { cout <<"\n >>>> Entered number > " << Max << " = autocorrected <<<<"; tmp_str [countN]= 0; tmp_c = 13; } countN++; } }while(!iscntrl(tmp_c)); cout <<"\n"; return (int(tmp_c) == 27); } //----------------------------------- int GetNumberByPos(unsigned int Pos) { if((Pos) >= strlen(tmp_str)) return -1; char t[2]; t[0] = tmp_str[Pos]; t[1] = 0; return atoi(t); } //----------------------------------- int GetCount() { return strlen(tmp_str); } //----------------------------------- int GetNumber() { return atoi(tmp_str); } }; //-------------------------------------------------------------------------- int main(int argc, char* argv[]) { MyInt my(10000); while(!my.ScanButtons("Enter number please: ")) { cout << " OK, your number is = " << my.GetNumber() << "\n"; cout << " Was entered " << my.GetCount() << " digits \n"; cout << " My first digit = " << my.GetNumberByPos(0) << "\n"; cout << " My penult digit = " << my.GetNumberByPos(my.GetCount()-2) << "\n"; cout <<"===========================================================\n"; } return 0; } //---------------------------------------------------------------------------
Сообщение отредактировал Admin - Пятница, 02.05.2014, 15:27 |
|
| |
Admin | Дата: Пятница, 02.05.2014, 15:29 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 65
Статус: Offline
| Вам нужно приведенный код переделать на чистый Си или это вы уже попробовали сделать?
|
|
| |
student | Дата: Пятница, 02.05.2014, 19:00 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| да, мне нужно переделать на чистый си
|
|
| |
Admin | Дата: Пятница, 02.05.2014, 20:33 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 65
Статус: Offline
| С Си не знаком. Либо программу-конвертер поищите либо в конкретный компилятор код скопируйте и там поочередно правьте ошибки.
|
|
| |
student | Дата: Пятница, 02.05.2014, 20:42 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| а не могли бы вы порекомендовать какие-нибудь программы- конвертер?
|
|
| |