Подсчитать общее количество простых чисел среди элементов массивов 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()
. После этого освобождаются все выделенные динамические памяти и программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д