Сформировать последовательность С - разницу двух последовательностей В и А - C (СИ)
Формулировка задачи:
#include <stdio.h> // Прототипы scanf, printf #include <conio.h> // Прототипы clrscr, getch #define ESC 27 // Код ASCII клавиши Esc #define M 1000 #define N 1000 //Главная процедура //Выполняет ввод данных, вызов процедуры решения и печать результата int main(){ // Объявления переменных и массивов int i, j; //Переменные-счётчики short m, //количество элементов массива A n, //количество элементов массива B k=0; int a[N]; //Последовательность A int b[M]; //Последовательность B int c[N]; //Последовательность C void Solution(short, int[], short, int[], short, int[]); do{ // Цикл для повтора с выходом по ESC //Ввод контролируемых данных printf("\nВведите количество элементов массива А: "); scanf_s("%d", &m); printf("\nВведите элементы массива А: "); for (i=0; i<m; i++) scanf_s("%d", &a[i]); printf("\nВведите количество элементов массива В: "); scanf_s("%d", &n); printf("\nВведите элементы массива В: "); for (j = 0; j<n; j++) scanf_s("%d", &b[j]); // Ввод неконтролируемых данных // Обращение к решению и печать результатов Solution(m, a, n, b, k, c); printf("\nПоследовательность C: "); for(i=0; i<k; i++) printf("%3d ", a[i]); printf("\n"); printf("\nВыход - Esc, продолжение - любая клавиша\n"); }while(_getch()!=ESC); }// Конец файла Main
#include <stdio.h> // Прототипы scanf, printf #include <conio.h> // Прототипы clrscr, getch #define M 1000 #define N 1000 void Solution( short m, int a[], short n, int b[], short k, int c[]){ // Объявления и комментарии локальных переменных int i, j, p, temp=0; // АЛГОРИТМ РЕШЕНИЯ //1. Формирование массива, содержащего все элементы последовательности А без повторений (удаление повторений) for(i=0; i<m; i++) { for(j=i+1; j<m; j++) { if(a[i]==a[j]) { for(p=j; p<m-1; p++) a[p]=a[p+1]; m--; j--; } } } //2. Формирование массива C, который не содержит элементов из массива В for (i = 0; i<m; i++){ for (j = 0; j<n; j++){ if (a[i] == b[j]) temp = 1; } if (temp == 0) a[k++] = a[i]; temp = 0; } }
Решение задачи: «Сформировать последовательность С - разницу двух последовательностей В и А»
#include <stdio.h> #include <stdbool.h> // в сях були только в c99 появились, и то в хэдере // размер массивов, куда покладём-сь последовательности #define BUF_SIZE 10 // здесь проверяем, входит ли num в seq размерности seq_size bool numInSequence(int num, int* seq, size_t seq_size); int main(int argc, char** argv) { int a[ BUF_SIZE ] = { // последовательность 'a' - нечётные 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 }; int b[ BUF_SIZE ] = { // Фиббоначи 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 }; int c[ BUF_SIZE ] = {0}; // инициализируем нулями int cur = 0; int iter; for (iter = 0; iter < BUF_SIZE; ++iter) { // если число из 'a' не входит в 'b', пихаем его в 'c' if (!numInSequence(a[ iter ], b, BUF_SIZE)) { c[ cur ] = a[ iter ]; ++cur; } } // печатаем. т.к в исходных последовательностях нулей не было, // можно использовать нуль как условие останова for (iter = 0; iter < BUF_SIZE && c[ iter ]; ++iter) { printf("%d ", c[ iter ]); } puts(""); return 0; } bool numInSequence(int num, int* seq, size_t seq_size) { int iter; for (iter = 0; iter < seq_size; ++iter) { if (num == seq[ iter ]) { return false; } } return true; }
Объяснение кода листинга программы
В этом коде есть три переменные-массива: a, b и c. Переменная a содержит последовательность нечетных чисел, переменная b содержит последовательность Фибоначчи, а переменная c используется для хранения результата. Код проверяет, содержится ли каждый элемент из последовательности a в последовательности b, используя функцию numInSequence. Если элемент не найден в последовательности b, он добавляется в конец последовательности c. Затем код выводит все элементы последовательности c, используя цикл for и функцию printf. Функция numInSequence принимает три аргумента: число, которое нужно проверить, последовательность, в которой нужно проверить наличие этого числа, и размер этой последовательности. Она использует цикл for для проверки каждого элемента последовательности. Если число найдено, функция возвращает false, иначе она возвращает true.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д