Inessevanston
@Inessevanston
^__^

Как запретить ввод символов в этом коде?

Привет. Нуб, то бишь я, тормозит сильно. В проге нужно запретить ввод букв. Запретить в обозначении длинны массива запретила, но нарушила код. Дальше размер не учитывается и идет до бесконечности. Как выправить? Спасибо заранее.

#include <iostream>
#include <windows.h>
#include<string>
#include<conio.h>
#include<cstdlib>

using namespace std;
bool test(char ch,const char *keys,unsigned int size)
{
       for(int i=0;i<size ;i++ )
             if(keys[i] == ch) return true;
       return false;
}

int f(int *array, int size)
{
int newSize = size;
for (int i = 1; i < newSize; i++)
{
if (array[0] == array[i])
{
for (int j = i; j < newSize - 1; j++)
{
array[j] = array[j+1];
}
newSize--;
i--;
}
}
return newSize;
}
void printArray(int *array, int size)
{
std::cout << "Длина массива = " << size << " : ";
for (int i = 0; i < size; ++i)
{
std::cout << array[i] << " ";
}
std::cout << std::endl;
}
int main()
{
setlocale (LC_ALL, "RUS");
int arraySize;
int *array;
std::cout << "Размер массива = ";
{char numbers[10] = {'0','1','2','3','4','5','6','7','8','9'};
	string arraySize;
	char ch;

	while((ch=getch()) != '\r')//enter
		if(test(ch,numbers,10))
		{
			arraySize += ch;
			cout<<ch;
		}
	}
std::cout << std::endl;
array = new int[arraySize];
for (int i = 0; i < arraySize; ++i)
{
std::cout << "Число[" << i <<"] = ";
std::cin >> array[i];
}
printArray(array, arraySize);
arraySize = f(array, arraySize);
printArray(array, arraySize);
system("pause");
return 0;
}
  • Вопрос задан
  • 1702 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы