Заданы массивы действительных чисел а1,а2,…,а20 и b1,b2,…,b30. Перенести в массив С те элементы массива В, которые встречаются в массиве А, удалив их и из массива А, и из массива В. Нужен код на языке Си.
под удалить подразумевается сдвинуть все элементы, находящиеся после удаляемого элемента, влево, или просто удаляемый элемент приравнять нулю?
Приравнять к 0.
#include int main() { int a[20], b[30], c[20], lenC = 0; for(int i = 0; i < 20; i++) scanf("%d", &a[i]); for(int i = 0; i < 30; i++) scanf("%d", &b[i]); for(int i = 0; i < 30; i++) for(int j = 0; j < 20; j++) if(b[i] == a[j]) { c[i] = b[i]; lenC++; for(int k = j; k < 20; k++) if(a[k] == b[i]) a[k] = 0; b[i] = 0; break; } for(int i = 0; i < lenC; i++) printf("%d ", c[i]); }
вот и я о том же
понял
секунду
надо не c[i] = b[i] , а c[lenC] = b[i];
ну и наверное все-таки цикл, который я добавил все-таки не нужен по k
а просто a[j] = 0
мусор был потому, что массив С заполнялся не подряд а кусками, а вывод просили подряд
поэтому для него нужен свой счетчик lenC
изменить ответ, к сожалению не могу, почему-то нет доступа
Напишите мне в личку.