Проблемы,не могу добиться верного выполнения условия - 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();
    
    }

Объяснение кода листинга программы

  1. Объявлены переменные: char a[10]; int i, b, inf, N, countc = 0,count=0,ch;
  2. Инициализирован генератор случайных чисел с помощью функции srand(time(NULL));
  3. В цикле for (inf = 1; inf > 0; inf++) генерируется случайное число N от 4 до 6.
  4. Во внутреннем цикле for (i = 0; i < N; i++) генерируется случайное число b от 0 до 2.
  5. В зависимости от значения b, в массив a записывается одна из трех букв 'a', 'b' или 'c'.
  6. Если в начале массива находятся буквы 'a' и 'c', то в цикле if (a[i]=='a') выполняется условие a[i+1]='b'; i++;.
  7. Если в начале массива находятся буквы 'a' и 'c', то в цикле if(countc>=0 && countc<=2) выполняется условие, но его значение не указано в вопросе.
  8. В цикле for (i = 0; i < N; i ++) выводится значение a[i];.
  9. Если значение переменной count больше 15, то цикл прерывается с помощью оператора break.
  10. После окончания внутреннего цикла, значение переменной countc сбрасывается в 1.
  11. В конце программы вызывается функция getch(), которая ожидает нажатия клавиши.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы