Обработка строк

  1. Реализовать класс для чтения/ записи строковой информации
{
public:
Serials();
void write(String str);
private:
protected:
};
 
 
void Serials::write(String str)
{
Serial.begin(9600);
{ if (Serial.available() > 0) 
{
str=Serial.readString();
Serial.println(str);
} 
}
 
#include "Led.h"
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String str = Serial.readString();
Serial.println(str);
}
}

Такой код правильный?

  1. Реализовать в классе функции для проверки строки на число

  2. Реализовать функцию для перевода строки в число и наоборот.

компилируется?

а должно?

А чего ты лезешь? :slight_smile:
Я у автора спросил - пробовал ли он компилировать свое творение, прежде чем бежать на форум спрашивать, правильный ли код.

1 лайк

да я слово класс не увидел, подумалось или лыжи не едут или поел чего то не того или неправильный интернет, вот и спросил

@gagasfqwfqwA
Скопируйте свой код в Ардуино Иде и попробуйте скомпилировать. Если будут ошибки - вы будете знать, что исправлять.

ino:2:14: error: a function-definition is not allowed here before ‘{’ token
no:6:13: error: a function-definition is not allowed here before ‘{’ token

Вот и ответ.

число левых и правых скобок не совпадает, проверяте

Очень помогает автоформат (Ctrl-T) в ИДЕ

1 лайк

Для начала Вам нужно точно и подробно сформулировать, что именно должен делать этот класс.

Да, это не ему нужно, а преподу. Ему, кроме пива и девок, ничего не нужно :slight_smile:

и то неплохо. Пройдет лет тридцать - и даже это радовать не будет :(((((((

кто с пивом дружен тому ЯН не нужен )))

Сижу сейчас в гостинице и до утра заняться решительно нечем. Вспомнилось, как я в прошлый раз поведал о подобной ситуации форуму, и что мне тогда Ворота ответил. Эххх …

#include "Serials.h"

Serials MyNewSerials();

void setup() {

MyNewSerials.Proverka("egerg12e");

}

void loop()

{

}


class Serials

{

public:

Serials();

void Proverka(String str);

private:

int i=0;

int n;

protected:

};

void Serials::Proverka(String str)

{

Serial.begin(9600);

if (Serial.available()>0)

{str=Serial.readString();

int len = str.length();

for (i;i<len;i++)

{if((str[i]>='0') and (str[i]<='9'))

{Serial.print("Est chislo");}}

}

}

Проверка строки на число

Подскажите, правильно ли я составил программу? Сначала происходит проверка количества байт, затем измеряется длина строки и если в строке есть символ от “0” до “9”, то всё выполняется?

Однозначные ответы принимаются или нужен именно развёрнутый ответ?))

Приведите программу полностью. Например, что находится в файле "Serials.h"

#include &quot;Serials.h&quot;
Stroka St;
void setup()
{
St.stroka();
St.current_str = ("dwqfqwf2");
St.Proverka();
}
void loop()
{}                                                                                                                                                                                          

class Stroka
{
public:
stroka();
void writest();
void readst();
void Proverka();
String current_str;
private:
protected:
};

void Stroka::readst()
{
if (Serial.available() &gt; 0)
{
current_str =Serial.readString();

}
}
void Stroka::Proverka()
{
int len = current_str.length();
for (int i=0;i&lt;len;i++)
{if  ((current_str[i]>='0'  ) && (current_str[i]<='9'))  {
Serial.println("Est chislo" }}
}

Stroka::stroka()
{
Serial.begin(9600);
}

Компиляция выполняется успешно, Serials.h - это и есть описание самого класса.
Можно ли так проверить строку на число? ( есть ли в строке число ) Или есть какая-то команда / хитрая процедура ( алгоритм ) ?

Это Си, детка. Тут единственный алгоритм - манипуляция ячейками памяти. В данном случае - их перебор.

Конкретизируйте, что значит “проверить строку на число”.
Например, в строке “a12b3c” есть число? Если есть, то какое именно?