Сформировать последовательность С - разницу двух последовательностей В и А - 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.