Проблемы,не могу добиться верного выполнения условия - C (СИ)
Формулировка задачи:
Создать программу на С++, которая будет продуцировать цепочки(слова) в трехсимвольном алфавите с записью их в файл, причем длина L цепочек ограничена: L1<= L <= L2 и для каждой цепочки, отобранной в файл, должно выполняться условие < A >. Общее количество цепочек в файле должно быть не более M.
Содержит не более двух символов «с», начинается на «ас», а символ «а» встречается только по одному...
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; int main () { char a[10]; int i, b, inf, count = 0, N, countc = 0; srand(time(NULL)); for (inf = 1; inf > 0; inf++) // Задаем бесконечный цикл для генерации комбинаций символов { N = 10 - rand()%7; // Задаем количество символов в строке от 4 до 10 for (i = 0; i < N; i++) // Задаем цикл, где каждому элементу строки будем присваивать значение от 0 до 2 { b = rand()%3; // Задаем переменной b рандомное значение от 0 до 2 включительно для дальнейшей замены 0-3 на a-c if (b == 0) // Если значение 0, ставим вместо него а a[i] = 'a'; if (b == 1) // Если значение 1, ставим вместо него b { a[i] = 'b'; // Если встречается буква b, мы увеличиваем счетчик на 1 } if (b == 2) // Если значение 2, ставим вместо него c a[i] = 'c'; countc++; } if (a[0]=='a'&& a[1] == 'c') // Если на первом месте в комбинации стоит а b с, тогда if(a[i]=='a') ///если встречается а то пишем b { a[i+1] = 'b'; i++; } if (countc >= 0 && countc <=2)///Если C появляется не больше двух раз { for (i = 0; i < N; i ++) // Выводим строку на экран printf ("%c", a[i]); printf ("\n"); count++; // Увеличиваем счетчик выведенных на экран строк на 1 if (count>10) // Когда вывели на экран 10 строк, прерываем выполнение программы break; } countc=0; } getch(); }
....
...
Решение задачи: «Проблемы,не могу добиться верного выполнения условия»
textual
Листинг программы
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; int main () { char a[10]; int i, b, inf, N, countc = 0,count=0,ch; srand(time(NULL)); for (inf = 1; inf > 0; inf++) { N = rand()%6+4; for (i = 0; i < N; i++) { b = rand()%3; if (b == 0) a[i] = 'a'; if (b == 1) a[i] = 'b'; if (b == 2) { a[i] = 'c'; countc++; } if(a[0]=='a' && a[1]=='c') if (a[i]=='a') {a[i+1]='b'; i++;} } if (a[0]=='a'&&a[1]=='c') if(countc>=0 && countc<=2) { for (i = 0; i < N; i ++) cout<<a[i]; cout<<'\n'; count++; if (count>15) break; } countc = 1; } getch(); }
Объяснение кода листинга программы
- Объявлены переменные: char a[10]; int i, b, inf, N, countc = 0,count=0,ch;
- Инициализирован генератор случайных чисел с помощью функции srand(time(NULL));
- В цикле for (inf = 1; inf > 0; inf++) генерируется случайное число N от 4 до 6.
- Во внутреннем цикле for (i = 0; i < N; i++) генерируется случайное число b от 0 до 2.
- В зависимости от значения b, в массив a записывается одна из трех букв 'a', 'b' или 'c'.
- Если в начале массива находятся буквы 'a' и 'c', то в цикле if (a[i]=='a') выполняется условие a[i+1]='b'; i++;.
- Если в начале массива находятся буквы 'a' и 'c', то в цикле if(countc>=0 && countc<=2) выполняется условие, но его значение не указано в вопросе.
- В цикле for (i = 0; i < N; i ++) выводится значение a[i];.
- Если значение переменной count больше 15, то цикл прерывается с помощью оператора break.
- После окончания внутреннего цикла, значение переменной countc сбрасывается в 1.
- В конце программы вызывается функция getch(), которая ожидает нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д