Переписать в новый целочисленный массив все элементы исходного с порядковыми номерами, кратными трем - 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, что означает успешное завершение программы.