Подсчитать общее количество простых чисел среди элементов массивов 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; } } }
Объяснение кода листинга программы
Код представляет собой программу, которая подсчитывает количество простых чисел в двух массивах. Список функций и их назначение:
isSimple(int p)
- проверяет, является ли числоp
простым.masX(int *x, int n)
- подсчитывает количество простых чисел в массивеx
.masY(int **y, int n, int m)
- подсчитывает количество простых чисел в матрицеy
.showMasX(int *x, int n)
- выводит элементы массиваx
через пробел.showMasY(int **y, int n, int m)
- выводит элементы матрицыy
через пробел.generateMasX(int *x, int n)
- генерирует случайные числа в заданном диапазоне и заполняет ими массивx
.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()
. После этого освобождаются все выделенные динамические памяти и программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д