Переписать в новый целочисленный массив все элементы исходного с порядковыми номерами, кратными трем - C (СИ)
Формулировка задачи:
Дан целочисленный массив A размера N<=15. Переписать в новый целочисленный массив B все элементы с порядковыми номерами, кратными трем, и вывести размер полученного массива B и его содержимое. Условный оператор не использовать.
вот что пока получается, подскажите как задать размерность массива <15
и как произвести вывод размера получившегося массива?
#include <stdio.h> #include <locale.h> #include <stdlib.h> #include <time.h> #define NA 15 #define NB NA int main() { int a[NA], b[NB]; int i, k = 0; setlocale(LC_ALL, ""); srand(time(0)); for(i = 0; i < NA; i++) a[i] = rand() % 10; printf("Массив A:"); for(i = 0; i < NA; i++) printf(" %d", a[i]); printf("\n"); for(i = 3; i < NA; i=i+3){ b[k++]=a[i]; } printf("Массив B:"); for(i = 0; i < k; i++) printf(" %d", b [i]); printf("\n"); return 0; }
Решение задачи: «Переписать в новый целочисленный массив все элементы исходного с порядковыми номерами, кратными трем»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <memory.h> #define N 90 int main(int argc, char* argv[]) { int* A = new int[N]; memset((void*)A, 0x00, sizeof(int) * N); for (int t = 0; t < N; t++) { A[t] = rand() % N + 1; printf("%d ",A[t]); } printf("\n\n"); int B[N/3] = { 0 }; int count = 15; int n = 0; for (int k = 3; --count >= 0; k+=3) B[n++] = A[k]; for (int q = 0; B[q] != 0; q++) printf("%d ",B[q]); printf("\n"); _getch(); return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается массив A динамически с помощью оператора new, размер которого определяется в N.
- С помощью функции memset массив A инициализируется нулями.
- В цикле for заполняются элементы массива A случайными числами от 1 до N с помощью функции rand().
- Выводится на экран весь массив A с помощью функции printf().
- Создается массив B статически с помощью оператора {} размером N/3 и инициализируется нулями.
- Задаются две переменные count и n для контроля переполнения массива B и подсчета количества перезаписей.
- В цикле for начиная с индекса 3 и с шагом 3 перезаписываются элементы массива B значениями элементов массива A с помощью оператора +=.
- Выводится на экран весь массив B с помощью функции printf().
- В конце программы вызывается функция _getch() для приостановки выполнения программы до нажатия клавиши.
- Возвращается 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д