Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 10
1

Консольная функция

30.03.2016, 13:54. Показов 552. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Задача стояла и стоит следующая - необходимо из текста программы выдернуть функцию и протестировать ее, записав отдельно в консоль. Суть функции - пользователь вводит текстовую информацию с некоторыми ограничениями(текст может содержать только одну латинскую букву - "e"(сокращенная запись числа) и цифры, соответственно):

1 Ввод текста не может начинаться с буквы( в том числе и "e")
2 После ввода цифр, после них можно ввести только букву "e", причем единожды. Если они идут 2 подряд - то должно быть значение false.

В общем, дальше поясню на тестовых примерах: (+ истина, - ложь)
123 +
123.5 +
12е +
12е45f -
12e-4e1 - (т.к. после е цифр быть не должно)
12e-2 +
12e-2g -
12eeee -
12efgh -

Думаю, понятно. Вот выдернутая функция:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <windows.h>
#include <string.h> 
#include <stdio.h>
 
 
//////////////////////////////////////////////////////////
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
 //  All starting work
 hInst = hInstance;
 
 
///////////////////////////////////////////////////////
bool RightStringDouble(char *chBuff, double& value)
 {char *pc, *strTemp;
  unsigned ll = 1;
  
  strTemp = (char *)malloc(strlen(chBuff));   
 
  if (*chBuff >= 'A')
    {ll = 0;
     goto RET_VALUE;
    };   
  value = strtod(chBuff, &pc);
  if(*pc == 'e' || *pc == 'E')         
    {
     strncpy(strTemp, chBuff, pc - chBuff);
     if(strstr(strTemp, "e") != NULL || strstr(strTemp, "E") != NULL)
         {ll = 0;
          goto RET_VALUE;
         }  
    };
  if (*pc != "\0")
    {ll = 0;
    goto RET_VALUE;
    };
    
  RET_VALUE:  
  free(strTemp);            
  return ll;
 }
В функцию надо дописать условия на true и false и сделать вывод на экран. Вывод на экран написал после функции, но преподаватель сказал, что этим только осложняю себе жизнь и сделать все в теле функции. В теле же функции у меня каша с выводом и условиями на истину и ложь. Надеюсь на помощь, спасибо за внимание.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2016, 13:54
Ответы с готовыми решениями:

Консольная графика
Доброго времени суток!!! Как под DOS рисовать примитивные обьекты линии, квадраты, круги? Для...

Консольная программа С++ по WinAPI
Не могу разобраться с данным заданием. Прошу подсказать, откуда и как вообще это начать понимать...

Консольная игра Тетрис С++
Здравствуйте! Помогите пожалуйста начинающему программисту нужно написать консольный тетрис на...

консольная утилита
Программа представляет собой консольную утилиту. Настройка работы программы осуществляется путем...

3
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
30.03.2016, 14:12 2
Так и что ты хочеш то? -Правильно сформулированный вопрос - половина ответа.

Вообще что то не ясно что ты туда напихал...
Вот пример как я Double проверяю (только положительный и только дробное число, "123" не прокатит):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool StrIsDouble(char *fSI)
{
    int fSIl=strlen(fSI);
    int fPt=0;
    if(fSIl < 3)
        return false;
    else
    {
        for(int i=0;i<fSIl;i++)
        {
            if(!isdigit(fSI[i]))
            {
                if((fSI[i]=='.')&&(i!=0)&&(i!=fSIl-1)&&(fPt==0))
                {
                }
                else
                    return false;
            }
        }
    }
    return true;
}
Добавлено через 8 минут
Забыл, внутри скобок (дабы дважды точку не встретить):
C++
1
2
3
4
if((fSI[i]=='.')&&(i!=0)&&(i!=fSIl-1)&&(fPt==0))
{
fPt=1;
}
0
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 10
31.03.2016, 00:47  [ТС] 3
Проверку твою понял, а как вывод на экран реализовать там же?
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
31.03.2016, 07:41 4
Цитата Сообщение от Slardar Посмотреть сообщение
вывод на экран реализовать там же
В этой же функции? Если код дошёл до true (конца кода функции), то
C++
1
cout << fSI;
или sprintf, смотря что нравится.
0
31.03.2016, 07:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2016, 07:41
Помогаю со студенческими работами здесь

Консольная команда
Здравствуйте! Подскажите, какая команда из консоли команд в Windows XP будет правильной, чтобы...

Консольная программа...
Здравствуйте! Прошу помочь с написанием консольной программы, которая вводит с консоли значения...

Консольная программа
Здравствуйте... Я уже немного научился программировать на C++ и тут наткнулся на консольную...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru