Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

из string в массив в C++(не видит выражения с ним) Что делать?

Danker Ученик (23), закрыт 6 лет назад
Задание заключается в что нужно ввести строку и определить является ли она целым числом
Вот фрагмент кода
#include
#include
#include
using namespace std;
int main(){
setlocale(LC_ALL,"Russian");
string(c);
int a=0;
cout<<"Введи строку"<>c;
c.c_str() ;
while(a<strlen(c.c_str()))
if((c[a]=1)||(c[a]=2)||(c[a]=3)||(c[a]=4)||(c[a]=5)||(c[a]=6)||(c[a]=7)||(c[a]=8)||(c[a]=9)||(c[a]=0))a++;

}

return 0;

}
Суть в том, что выражения с массивом (через функцию c_str() не воспринимаются
К примеру если я введу строку из одного символа, к примеру, 1(пусть как в программе массивом будет c)
if(c[0]==1){a=c[0];
cout<<a;
}на консоль ничего не выводится
Может как-нибудь переприсвоить все массиву типа int?
Буду благодарен если допишите код
p.s перепробовал кучу алгоритмов никак не получается нормально определить int
Дополнен 6 лет назад
Заголовки все нужные включал, скопировалось криво
Лучший ответ
Василий Новиков Гуру (4273) 6 лет назад
#include
#include
#include
Что это?
DankerУченик (23) 6 лет назад
Скопировал криво
Я Красавчег Мыслитель (7353) если использовать & lt & gt то не режет. & lt и & gt писать без пробела.
Алекс КухаВысший разум (449019) 6 лет назад
Здешний парсер режет между < >
Остальные ответы
kaiu Высший разум (115765) 6 лет назад
Строка является целым числом если она состоит из цифр от 0 до 9, так что даже число 1212423232438437438749749747324732479324732874328423979878327483278 есть целое.
char mas[255]; \\ Допустим завел массив для строки
cin >> mas; \\ ввел в этот массив строку символов
bool yesint = true;
char *u = mas; // указатель на массив
// пока указатель не на ноль
while(*u != 0)
{
// если символ не цифра, то это не целое число и выйти
if(*u < '0' || *u > '9') { yesint=false; break; }
u++; // следующий символ берем
}

Попробуй и если надо подправь там код
DankerУченик (23) 6 лет назад
Спасибо огромное, а как для безразмерного массива т. е для любого вводимого кол-ва символов?
kaiu Высший разум (115765) Ты можешь ввести гугол чисел? https://ru.wikipedia.org/wiki/Гугол На все есть ограничение, я уж думаю тебе даже 255 чисел хватит, а нет так пиши mas[65025] если тоже не устанешь вводить, а так есть типы и string есть и специальные функции проверки на целое, но если у вас задание согласно обучения, то делайте как вас дают.
Panic DoctorПросветленный (43446) 6 лет назад
>Строка является целым числом если она состоит из цифр от 0 до 9
а еще у строки может быть ведущий знак "-"
DankerУченик (23) 6 лет назад
Последний вопрос
Почему при переводе строки в массив выражения (| |,&&) в инструкциях не работают ?(это тип автоматом отключили в силу того что могу ввести не цифру?)
Danker Ученик (23) строка класса string
zhodzky Просветленный (47984) 6 лет назад
Забавный код)))
http://ideone.com/9wXlIF - на, пользуйся. Думаю так получше будет чем все цифры перебирать)))
Я Красавчег Мыслитель (7353) 6 лет назад
DankerУченик (23) 6 лет назад
не пашет
Я Красавчег Мыслитель (7353) Да как это не пашет, если только что запускал!?
DankerУченик (23) 6 лет назад
Может объяснить в чем смысл в if выражении?
Я Красавчег Мыслитель (7353) Символы - тоже числа. Я знаю что "0" - 48, "1" - 49, "2" - 50 и т. д. Отсюда выводы: нужно что бы число было в этих пределах
Николай Веселуха Высший разум (361929) 6 лет назад
#include <iostream>
#include <string>
#include <regex>
using namespace std;
bool is_integer(const string& line) {
auto b = line.begin();
auto e = line.end();
if (line.front() == '-' || line.front() == '+') ++b;
return regex_match(b, e, regex("\\d+"));
}
int main() {
cout << "integer: ";
string integer;
cin >> integer;
if (is_integer(integer)) cout << "Yes!\n";
else cout << "No!\n";
system("pause");
}
DankerУченик (23) 6 лет назад
А если число с-?
Николай Веселуха Высший разум (361929) Исправил, теперь с любого знака (+-)
Похожие вопросы