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

Объяснение кода листинга программы

В этом коде:

  1. Создается массив A динамически с помощью оператора new, размер которого определяется в N.
  2. С помощью функции memset массив A инициализируется нулями.
  3. В цикле for заполняются элементы массива A случайными числами от 1 до N с помощью функции rand().
  4. Выводится на экран весь массив A с помощью функции printf().
  5. Создается массив B статически с помощью оператора {} размером N/3 и инициализируется нулями.
  6. Задаются две переменные count и n для контроля переполнения массива B и подсчета количества перезаписей.
  7. В цикле for начиная с индекса 3 и с шагом 3 перезаписываются элементы массива B значениями элементов массива A с помощью оператора +=.
  8. Выводится на экран весь массив B с помощью функции printf().
  9. В конце программы вызывается функция _getch() для приостановки выполнения программы до нажатия клавиши.
  10. Возвращается 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы