помогите сделать цыкл
- Войдите на сайт для отправки комментариев
Пт, 25/03/2016 - 18:40
Помогите сделать цыкл, требуется 1000 значений
int variable1 = 0;
if (StrContains(HTTP_req, "var1=0a")) {
variable1 = 0;
} else if (StrContains(HTTP_req, "var1=1a")) {
variable1 = 1;
} else if (StrContains(HTTP_req, "var1=2a")) {
variable1 = 2;
} else if (StrContains(HTTP_req, "var1=3a")) {
variable1 = 3;
} else if (StrContains(HTTP_req, "var1=4a")) {
variable1 = 4;
} else if (StrContains(HTTP_req, "var1=5a")) {
variable1 = 5;
} else if (StrContains(HTTP_req, "var1=6a")) {
variable1 = 6;
} else if (StrContains(HTTP_req, "var1=7a")) {
variable1 = 7;
} else if (StrContains(HTTP_req, "var1=8a")) {
variable1 = 8;
} else if (StrContains(HTTP_req, "var1=9a")) {
variable1 = 9;
} else if (StrContains(HTTP_req, "var1=10a")) {
variable1 = 10;
} else if (StrContains(HTTP_req, "var1=11a")) {
variable1 = 11;
} else if (StrContains(HTTP_req, "var1=12a")) {
variable1 = 12;
}
int num = 0; const char* str = strstr(HTTP_req.c_str(),"var1="); if(str) { String buff; str += 5; while(*str != 'a') { buff += *str++; } num = buff.toInt(); } if(num > 0) { // работаем с номером. }Навскидку написал, думаю, принцип понятен - ищем начало "var=", переходим за знак "=", и читаем символы во временную строку, пока не встретим символ "а". После этого - в буфере число: переводим его из строкового представления в числовое - вуаля, не надо 1000 раз в цикле проверять ;)
Помогите сделать цыкл, требуется 1000 значений
1. Внимательно читаем вот это и вот это.
2. Открываем любой редактор текста и набираем там фразу "Цыган присел на цыпочки, сказал цыплёнку цыц". Делаем это в ц
ЫИкле - требуется 1000 значений.Проблему как рукой снимет.
Евгений, простите, а зачем цЫкл в данной задачке ? Распарсить строку вида "var1=nnnna", вытащить всё между "=" и "а", преобразовать "nnnn" в целое число, присвоить переменной variable1 - DIYMan всё расписал. Или Вы чисто с воспитательными целями...
Евгений, простите, а зачем цЫкл в данной задачке ? Распарсить строку вида "var1=nnnna", вытащить всё между "=" и "а", преобразовать "nnnn" в целое число, присвоить переменной variable1 - DIYMan всё расписал. Или Вы чисто с воспитательными целями...
Я отвечал на вопрос как организовать цЫкл, безотносительно задачи. Прочитает по ссылкам, будет знать.
А на вопрос "зачем там этот цЫкл" нужен, я не заморачивался.
int count; int variable2 = 0; int variable2_arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; for (count = 0; count < 13; count++) { char varCount = "StrContains(HTTP_req, \"var2=" + variable2_arr[count] + "a\")";// эта строка, привык к JS по этому так написал if (varCount) { variable2 = variable2_arr[count]; } }Цикл то готов, реально проблема с вытаскиванием значения, пока немогу понять по наброске DIYMan.
char varCount = "StrContains(HTTP_req, \"var2=" + variable2_arr[count] + "a\")";// эта строка, привык к JS по этому так написалАга, только здесь не JS. Я вот так к Лиспу привык, и тоже хочу на лиспе писать, только С++ сволочь почему-то не понимает.
Убирайте и пишите на том языке, на котором в данный момент программируете.
программисты поймут что я хотел этим выразить.
программисты поймут что я хотел этим выразить.
Программисты, может, и поймут, а вот компилятор - он тупой как валенок и ни хрена не понятливый :)
int num = 0; const char* str = strstr(HTTP_req.c_str(),"var1="); if(str) { String buff; str += 5; while(*str != 'a') { buff += *str++; } num = buff.toInt(); } if(num > 0) { // работаем с номером. }Навскидку написал, думаю, принцип понятен - ищем начало "var=", переходим за знак "=", и читаем символы во временную строку, пока не встретим символ "а". После этого - в буфере число: переводим его из строкового представления в числовое - вуаля, не надо 1000 раз в цикле проверять ;)
Строка 16 не проканает, ибо var1=0 вполне может быть. :)
Что будет в строке 6, если после var1= ничего не окажется?
Что будет в строке 7, если "а" так и не найдётся?
А кто такой HTTP_req? Где он живёт, подскажите, пожалуйста. Я то HTTP руками сделал, за одно так быстрее получилось: получив строку GET, а она как раз первой идёт в запросе, тут же флуш буфферу приёма, ибо там ненужного хлама много, раз в 5 больше, чем сам запрос, например, долгое персичление что может принимать экспрорер.
int num = 0; const char* str = strstr(HTTP_req.c_str(),"var1="); if(str) { String buff; str += 5; while(*str != 'a') { buff += *str++; } num = buff.toInt(); } if(num > 0) { // работаем с номером. }Навскидку написал, думаю, принцип понятен - ищем начало "var=", переходим за знак "=", и читаем символы во временную строку, пока не встретим символ "а". После этого - в буфере число: переводим его из строкового представления в числовое - вуаля, не надо 1000 раз в цикле проверять ;)
Строка 16 не проканает, ибо var1=0 вполне может быть. :)
Что будет в строке 6, если после var1= ничего не окажется?
Что будет в строке 7, если "а" так и не найдётся?
А кто такой HTTP_req? Где он живёт, подскажите, пожалуйста. Я то HTTP руками сделал, за одно так быстрее получилось: получив строку GET, а она как раз первой идёт в запросе, тут же флуш буфферу приёма, ибо там ненужного хлама много, раз в 5 больше, чем сам запрос, например, долгое персичление что может принимать экспрорер.
Ну я ж говорю - писал навскидку. Там делов-то понимающему - инициализировать num в -1, да ещё одну проверку на конец строки вставить ;) Вы же не думаете, что моя задача - сделать всё за ТС? Принцип - показан, остальное - на совести реализатора.
Там делов-то понимающему - инициализировать num в -1, да ещё одну проверку на конец строки вставить ;) Вы же не думаете, что моя задача - сделать всё за ТС? Принцип - показан, остальное - на совести реализатора.
Дело в том, что Вы это пишете для НЕпонимающих. Осторожнее с новичками, они считают Вас богом и верят каждой букве. Поправить они пока не могут. Так что старайтесь тщательно писать примеры.
Вот я согласен с Евгением. Или не давайте целый кусок кода, заманивая строкой "// работаем с номером". Хотя... Всё равно же им придётся учиться отлавливать чужие баги рано или поздно - пусть тренируются. :)
Да ладно, накинулись :) Скажите ещё, что вас в детстве плавать культурно учили :))) Меня вон выкинули из лодки - так и научился, ахахах. Иногда исповедую этот подход - ну а как иначе заставить человека начать думать, что он делает? Готовые куски кода - моветон, кмк.
Доиппаться можно и до столба, но раз хотите расово верного кода - вот он:
#define KNOW_VALUE_LOW 0 // нижнее значение диапазона, который может принимать переменная #define KNOWN_VALUE_HIGH 1000 // верхнее значение диапазона, который может принимать переменная int num = -1; // ах да - щас скажут, что могут быть и отрицательные числа в параметрах. Нунах. // HTTP_req - экземпляр класса String, сам рулит буфером, добавляя \0 последним символом static const String toFind = F("var1="); const char* str = strstr(HTTP_req.c_str(),toFind.c_str()); if(str) { String buff; str += toFind.length(); // раз нашли var1= - значит, как максимум, попадём на \0 в строке while(*str && *str != 'a') { buff += *str++; } num = buff.toInt(); } if(num >= KNOW_VALUE_LOW && num <= KNOWN_VALUE_HIGH) { // работаем с номером. }Так устроит, или опять разведём попкорн на ровном месте?
З.Ы. Знаю, что не устроит :) По хорошему - надо вводить уровень абстракций.