Поиск подстроки в строке с помощью char

187
06 июля 2019, 07:10

Задание: Нужно произвести поиск вещественного числа с фиксированной точкой в строке. И реализовать это через массив символов.

Снизу приведен пример выполнения с помощью string. Прошу помочь с такими вопросами: Как объявить строку в char? Найти её длину, учитывая ,что строка вводится с клавиатуры?

#include <iostream> 
#include <cmath> 
#include<conio.h> 
#include<string> 
using namespace std;
int main(int args, double, char * argv[]) {
setlocale(LC_ALL, "Russian");
int c, o, t, u, v, n = 0;
int f = 0;
int b = 0;
int m = 0;
o = 0;
u = 0;
t = 0;
string sr; 
cout << "Введите строку" << endl;
getline(cin, sr); 
for (int i = 0; i < sr.length(); i++) {
if (sr[i] == '.') { 
    if (!(isdigit(sr[i + 1])) || !(isdigit(sr[i - 1]))) { 
        continue;
    }
    else {
        for (v = i - 1; v > 0; v--) { 
            if (isdigit(sr[v])) {
                b = v;
            }
            else {
                if (sr[v] == '-') {
                    b = v;
                    break;
                }
                else break;
            }
        }
        for (f = b; f < sr.length(); f++) {
            if (sr[f] == '.') {
                break;
            }
            if (sr[f] == '-') {
                continue;
            }
            o++;
        }
    }
    f = 0;
    for (int n = i + 1; n < sr.length(); n++) {
        if (isdigit(sr[n])) {
            m = n;  
        }
        else break;
    }
    for (f = m; f > 0; f--) {  
        if (sr[f] == '.') {
            break;
        }
        u++;
    }
}
}
if (o == u) {
c = 0;
}
else {
c = 1;
}
if (c == 0 && t == 0) {
cout << "Число = ";
for (int i = b; i <= m; i++) {
    cout << sr[i];
}
}
else {
cout << "такого числа нет";
}
cout << endl;
system("pause");
return 0;
}
Answer 1

Ясно, что перед обьявлением массива, нужно определять размер введенной строки. Для этого нужно выделять память под строку с большим размером, а потом определить размер:

char* p = new char[256];
std::cin.getline(p, 255);
const size_t array_size = strlen(p);
char array[array_size + 1];
strcpy(array, p);
//если не нужно вводить еще одну строку, то
delete p;

И используйте array и его размер array_size

READ ALSO
Как изменить размер фотографии в px? [закрыт]

Как изменить размер фотографии в px? [закрыт]

Есть Bitmap (фотография) надо сделать его 250px на 250 pxКак это можно сделать?

172
javax.swing не выводится окно

javax.swing не выводится окно

Написал следующий код на javaПрограмма завершается корректно, но при запуске окно не выводится на экран

183
Java - RunTime Error. Не могу понять

Java - RunTime Error. Не могу понять

Решаю задачи на сайте, при отправке сервер выдает Runtime errorПодозреваю, что при чтении данных

167