Подсчитать общее количество простых чисел среди элементов массивов X (50) и Y (12х5) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

помогите написать или исправить мою прогу на си
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int masX(int *,int);
int masY(int *,int, int);
 
int main() 
{
    int X[50], Y[12][5], itog, prX, prY;
    srand (time(0));
    prX=masX(&X[0],50);
    prY=masY(&Y[0][0],12,5);
    itog=prY+prX;
    printf("Kolichestvo prostih chisel:%d", itog);
    return 0;
}
int masX (int*p,int n)
{
    int X[50];
    int d,i,j,pr_chx;
    for (i=0;i<50;i++)
    X[i]=rand()%101-50;
    for (i=0;i<50;i++)
    {
        for (j=2;j<49;j++)
        {
        if (X[i]%j!=0) continue;
        else d++;
        }
    if (d==0) pr_chx++;
    }
    return pr_chx;
}
int masY (int*p,int n,int m)
{
    int Y[12][5];
    int d,i,j,k,pr_chy;
    for (i=0;i<12;i++)
    {
        for (j=0;j<5;j++)
        {
            Y[i][j]=rand()%101-50;  
        }
    }
    for (i=0;i<12;i++)
    {
        for (j=0;j<5;j++)
        {
            for (k=2;k<49;k++)
            {
                    if (Y[i][j]%k!=0) continue;
                    else d++;   
            }
        }
    if (d==0) pr_chy++;
    }
    return pr_chy;
}

Решение задачи: «Подсчитать общее количество простых чисел среди элементов массивов X (50) и Y (12х5)»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
 
int isSimple(int);
int masX(int *, int);
int masY(int **, int, int);
void showMasX(int *, int);
void showMasY(int **, int, int);
void generateMasX(int *, int);
void generateMasY(int **, int, int);
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "RU");
 
    int itog, prX, prY;
    int *X = (int *)calloc(50, sizeof(int));
    int **Y = (int **)calloc(12, sizeof(int *));
    for(int i=0; i<12; ++i){
        Y[i] = (int *)calloc(5, sizeof(int));}
    generateMasX(X, 50);
    generateMasY(Y, 12, 5);
    printf("Массив X:\n");
    showMasX(X, 50);
    printf("Матрица Y:\n");
    showMasY(Y, 12, 5);
 
    prX = masX(X, 50);
    prY = masY(Y, 12, 5);
    itog = prY  +prX;
    printf("Количество простых чисел: %d\n", itog);
 
    for(int i=0; i<12; ++i){
        free(Y[i]);}
    free(Y);
    free(X);
    
    printf("Нажмите любую клавишу для выхода\n");
    _getch();
 
    return 0;
}
 
int isSimple(int p)
{
    for(int i=2; i*i<p; ++i){
        if(p % i == 0){
            return 0;}
    }
    return 1;
}
 
int masX(int *x, int n)
{
    int sum = 0;
    for(int i=0; i<n; ++i){
        if(isSimple(x[i])){
            ++sum;}
    }
    return sum;
}
 
int masY(int **y, int n, int m)
{
    int sum = 0;
    for(int i=0; i<n; ++i){
        for(int j=0; j<m; ++j){
            if(isSimple(y[i][j])){
                ++sum;}
        }
    }
    return sum;
}
 
void showMasX(int *x, int n)
{
    for(int i=0; i<n; ++i){
        printf("%d ", x[i]);
    }
    printf("\n");
}
 
void showMasY(int **y, int n, int m)
{
    for(int i=0; i<n; ++i){
        for(int j=0; j<m; ++j){
            printf("%d ", y[i][j]);
        }
        printf("\n");
    }
}
 
void generateMasX(int *x, int n)
{
    srand(time(NULL));
    for(int i=0; i<n; ++i){
        x[i] = rand() % 101;
    }
}
 
void generateMasY(int **y, int n, int m)
{
    srand(time(NULL));
    for(int i=0; i<n; ++i){
        for(int j=0; j<m; ++j){
            y[i][j] = rand() % 101;
        }
    }
}

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

Код представляет собой программу, которая подсчитывает количество простых чисел в двух массивах. Список функций и их назначение:

  1. isSimple(int p) - проверяет, является ли число p простым.
  2. masX(int *x, int n) - подсчитывает количество простых чисел в массиве x.
  3. masY(int **y, int n, int m) - подсчитывает количество простых чисел в матрице y.
  4. showMasX(int *x, int n) - выводит элементы массива x через пробел.
  5. showMasY(int **y, int n, int m) - выводит элементы матрицы y через пробел.
  6. generateMasX(int *x, int n) - генерирует случайные числа в заданном диапазоне и заполняет ими массив x.
  7. generateMasY(int **y, int n, int m) - генерирует случайные числа в заданном диапазоне и заполняет ими матрицу y. В функции main() создаются два массива: X и матрица Y. Затем с помощью функций generateMasX() и generateMasY() эти массивы заполняются случайными числами. После этого выводятся на экран с помощью функций showMasX() и showMasY(). Затем с помощью функций masX() и masY() подсчитывается количество простых чисел в массиве X и матрице Y соответственно. Результаты сохраняются в переменных prX и prY. Наконец, сумма prX и prY сохраняется в переменной itog, и выводится на экран с помощью printf(). После этого освобождаются все выделенные динамические памяти и программа завершается.

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


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

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

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