Форум программистов, компьютерный форум CyberForum.ru

Проверить правильность расстановки символов “/*” и “*/” для комментариев - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ После каждого слова текста, заканчивающегося заданной подстрокой, вставить указанный символ http://www.cyberforum.ru/cpp-beginners/thread368783.html
После каждого слова текста, заканчивающегося заданной подстрокой, вставить указанный символ. помогите! :)
C++ Рассортировать числа по частоте встречаемости, используя алгоритм обмена Известно, что в массиве размерности N могут быть только целые числа из диапазона 1..31. Рассортировать эти числа по частоте встречаемости, используя алгоритм обмена. http://www.cyberforum.ru/cpp-beginners/thread368781.html
Найти количество строк в максимальном множестве попарно непохожих строк заданной матрицы. C++
Две строки целочисленной матрицы назовём похожими, если совпадают множества чисел, встречающихся в этих строках. Найти количество строк в максимальном множестве попарно непохожих строк заданной матрицы, расположенных подряд. на с++ найти не смог. а с pascal перевести не могу, потому, что не знаю абсолютно с++! Помогите! :)
Открытие txt файла для просмотра C++
#include <stdio.h> int main() { FILE * fi; fi = fopen("test.txt","rt"); int n; while( !feof(fi) ) { fscanf( fi, "%d\n", &n ); printf("%d\n",n );
C++ Подскажите где скачать с++ http://www.cyberforum.ru/cpp-beginners/thread368740.html
Здравствуйте. Подскажите где скачать с++(не визуал и не билдер, для вин32)
C++ написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. написать програму void(char source ,char dest) которая скопирует все символы из source ,которые не принадлежат алфавиту , в dest.выводить только символы из dest подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
19.10.2011, 11:44     Проверить правильность расстановки символов “/*” и “*/” для комментариев
В первом приближении, ввод из файлов и обработку ошибок ввода делать не стал:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdio.h>
#include <stdlib.h>
 
/* состояние автомата */
enum state
{
    NONE,
    COMMENT,
    STRING_LITERAL,
    END_OF_FILE,
    ERROR
};
 
/* используется для проверки символа комментария
 * в строковом литерале.
 * И да, это многострочный комментарий
 */
void silly_fun(const char* unused)
{
}
 
int main(int argc, char* argv[])
{
    enum state state;       /* текущее состояние */
    char prev, curr;        /* предыдущий и текущий символы */
 
    int ret;
    
    state = NONE;
 
    ret = scanf("%c", &prev);
 
    if(ret == EOF)
    state = END_OF_FILE;
    
    while(state != END_OF_FILE && state != ERROR)
    {
    ret = scanf("%c", &curr);
 
    switch(state)
    {
    case NONE:
 
        if(ret == EOF)
        state = END_OF_FILE;
        
        else if(curr == '*' && prev == '/')
        state = COMMENT;
 
        else if(curr == '\"')
        state = STRING_LITERAL;
        
        break;
 
    case COMMENT:
        /* внутри комментария */
        if(ret == EOF)
        state = ERROR;
        
        else if(curr == '/' && prev == '*')
        state = NONE;
                
        break;
 
    case STRING_LITERAL:
        /* внутри строкового литерала */
        if(ret == EOF)  /* по идее ошибка, но она не имеет отношения
                 * к проверке правильности комментариев */
        state = END_OF_FILE;
        
        else if(curr == '\"')
        state = NONE;
 
        break;
 
    case END_OF_FILE:
        /* этого никогда не случится */
        break;
 
    case ERROR:
        /* этого никогда не случится */
        break;
    }
    prev = curr;
    }
 
    if(state == ERROR)
    puts("Oh, no!"), exit(1);
 
    puts("OK");
    
    silly_fun("wrong /* comment inside of a string literal");
    
    exit(0);
}
тест
Код
[nameless@desktop c]$ cat main.c | ./sample # проверяем сами себя
OK
[nameless@desktop c]$ for i in /usr/include/*.h; do echo -ne "$i\t"; cat $i | ./sample; done/usr/include/aio.h	OK
/usr/include/aliases.h	OK
/usr/include/alloca.h	OK
/usr/include/a.out.h	OK
/usr/include/argp.h	OK
/usr/include/argz.h	OK
/usr/include/ar.h	OK
/usr/include/assert.h	OK
/usr/include/autosprintf.h	OK
/usr/include/byteswap.h	OK
/usr/include/complex.h	OK
/usr/include/cpio.h	OK
/usr/include/crypt.h	OK
/usr/include/ctype.h	OK
/usr/include/dirent.h	OK
/usr/include/dlfcn.h	OK
/usr/include/elf.h	OK
/usr/include/endian.h	OK
/usr/include/envz.h	OK
/usr/include/err.h	OK
/usr/include/errno.h	OK
/usr/include/error.h	OK
/usr/include/execinfo.h	OK
/usr/include/fcntl.h	OK
/usr/include/features.h	OK
/usr/include/fenv.h	OK
/usr/include/FlexLexer.h	OK
/usr/include/fmtmsg.h	OK
/usr/include/fnmatch.h	OK
/usr/include/fpu_control.h	OK
/usr/include/fstab.h	OK
/usr/include/ft2build.h	OK
/usr/include/fts.h	OK
/usr/include/ftw.h	OK
/usr/include/_G_config.h	OK
/usr/include/gconv.h	OK
/usr/include/GeoIPCity.h	OK
/usr/include/GeoIP.h	OK
/usr/include/GeoIPUpdate.h	OK
/usr/include/getopt.h	OK
/usr/include/gettext-po.h	OK
/usr/include/glob.h	OK
/usr/include/gmp.h	OK
/usr/include/gmp-i386.h	OK
/usr/include/gmp-mparam.h	OK
/usr/include/gmp-mparam-i386.h	OK
/usr/include/gmpxx.h	OK
/usr/include/gnu-versions.h	OK
/usr/include/grp.h	OK
/usr/include/gshadow.h	OK
/usr/include/gssapi.h	OK
/usr/include/iconv.h	OK
/usr/include/ieee754.h	OK
/usr/include/ifaddrs.h	OK
/usr/include/inttypes.h	OK
/usr/include/kdb.h	OK
/usr/include/keyutils.h	OK
/usr/include/krb5.h	OK
/usr/include/langinfo.h	OK
/usr/include/lastlog.h	OK
/usr/include/libgen.h	OK
/usr/include/libintl.h	OK
/usr/include/libio.h	OK
/usr/include/limits.h	OK
/usr/include/link.h	OK
/usr/include/locale.h	OK
/usr/include/malloc.h	OK
/usr/include/math.h	OK
/usr/include/mcheck.h	OK
/usr/include/memory.h	OK
/usr/include/mntent.h	OK
/usr/include/monetary.h	OK
/usr/include/mp.h	OK
/usr/include/mqueue.h	OK
/usr/include/netapi.h	OK
/usr/include/netdb.h	OK
/usr/include/nl_types.h	OK
/usr/include/nss.h	OK
/usr/include/obstack.h	OK
/usr/include/paths.h	OK
/usr/include/poll.h	OK
/usr/include/printf.h	OK
/usr/include/profile.h	OK
/usr/include/pthread.h	OK
/usr/include/pty.h	OK
/usr/include/pwd.h	OK
/usr/include/re_comp.h	OK
/usr/include/regex.h	OK
/usr/include/regexp.h	OK
/usr/include/resolv.h	OK
/usr/include/sched.h	OK
/usr/include/search.h	OK
/usr/include/semaphore.h	OK
/usr/include/setjmp.h	OK
/usr/include/sgtty.h	OK
/usr/include/shadow.h	OK
/usr/include/signal.h	OK
/usr/include/spawn.h	OK
/usr/include/stab.h	OK
/usr/include/stdint.h	OK
/usr/include/stdio_ext.h	OK
/usr/include/stdio.h	OK
/usr/include/stdlib.h	OK
/usr/include/strata_client.h	OK
/usr/include/string.h	OK
/usr/include/strings.h	OK
/usr/include/syscall.h	OK
/usr/include/sysexits.h	OK
/usr/include/syslog.h	OK
/usr/include/tar.h	OK
/usr/include/termio.h	OK
/usr/include/termios.h	OK
/usr/include/tgmath.h	OK
/usr/include/thread_db.h	OK
/usr/include/time.h	OK
/usr/include/ttyent.h	OK
/usr/include/ucontext.h	OK
/usr/include/ulimit.h	OK
/usr/include/unistd.h	OK
/usr/include/ustat.h	OK
/usr/include/utime.h	OK
/usr/include/utmp.h	OK
/usr/include/utmpx.h	OK
/usr/include/values.h	OK
/usr/include/wait.h	OK
/usr/include/wchar.h	OK
/usr/include/wctype.h	OK
/usr/include/wordexp.h	OK
/usr/include/xf86drm.h	OK
/usr/include/xf86drmMode.h	OK
/usr/include/xlocale.h	OK
/usr/include/zconf.h	OK
/usr/include/zlib.h	OK
[nameless@desktop c]$
 
Текущее время: 05:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru