Как устранить ошибку - C (СИ)
Формулировка задачи:
вообщем надо было написать программу которая
должна выяснить, встречается ли в данной строке группа символов, состоящая из трех стоящих рядом точек, которой непосредственно не предшествует точка, и за которой не следует точка. n=40
я написал
но она странным образом ничего не выводит, что делать?
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main () { int i; char a[40]; scanf ("%s", &a[i]); if ((a[0]=='.')&&(a[2]=='.')&&(a[1]=='.')&&(a[2]!='.')) printf("Г„Г*"); if ((a[37]=='.')&&(a[39]=='.')&&(a[38]=='.')&&(a[36]!='.')) printf("Г„Г*"); for(i=2;i<=36;i++) if ((a[i]=='.')&&(a[i+1]=='.')&&(a[i+2]=='.')&&(a[i-1]!='.')&&(a[i+3]!='.')) printf("Г„Г*"); printf("ГЌГҐГІ"); }
Решение задачи: «Как устранить ошибку»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char buf[41]; char* p; if(fgets(buf, 41, stdin) == NULL) fputs("Input error\n", stderr), exit(1); p = strstr(buf, "..."); while(p) { if(p[3] == '\0' || p[3] != '.') puts("Yes"), exit(0); p = strstr(p + 4, "..."); } puts("No"); exit(0); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Объявление двух переменных типа char: buf и p.
- Чтение строки из стандартного ввода с помощью функции fgets в массив buf.
- Поиск строки
...
в списке с помощью функции strstr и присвоение адреса этой строки переменной p. - Проверка условия: если p равно NULL или p[3] не равно '.', то выводится сообщение
Yes
и программа завершается с кодом 0. - Если условие не выполняется, то функция strstr вызывается снова, но уже с аргументом p+4, чтобы продолжить поиск следующей строки
...
- Если условие не выполняется, то выводится сообщение
No
и программа завершается с кодом 0. - В случае, если ввод не содержит строки
...
или ввод содержит несколько строк...
без точек, программа завершается с кодом 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д