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

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

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

помогите написать или исправить мою прогу на си
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int masX(int *,int);
  5. int masY(int *,int, int);
  6. int main()
  7. {
  8. int X[50], Y[12][5], itog, prX, prY;
  9. srand (time(0));
  10. prX=masX(&X[0],50);
  11. prY=masY(&Y[0][0],12,5);
  12. itog=prY+prX;
  13. printf("Kolichestvo prostih chisel:%d", itog);
  14. return 0;
  15. }
  16. int masX (int*p,int n)
  17. {
  18. int X[50];
  19. int d,i,j,pr_chx;
  20. for (i=0;i<50;i++)
  21. X[i]=rand()%101-50;
  22. for (i=0;i<50;i++)
  23. {
  24. for (j=2;j<49;j++)
  25. {
  26. if (X[i]%j!=0) continue;
  27. else d++;
  28. }
  29. if (d==0) pr_chx++;
  30. }
  31. return pr_chx;
  32. }
  33. int masY (int*p,int n,int m)
  34. {
  35. int Y[12][5];
  36. int d,i,j,k,pr_chy;
  37. for (i=0;i<12;i++)
  38. {
  39. for (j=0;j<5;j++)
  40. {
  41. Y[i][j]=rand()%101-50;
  42. }
  43. }
  44. for (i=0;i<12;i++)
  45. {
  46. for (j=0;j<5;j++)
  47. {
  48. for (k=2;k<49;k++)
  49. {
  50. if (Y[i][j]%k!=0) continue;
  51. else d++;
  52. }
  53. }
  54. if (d==0) pr_chy++;
  55. }
  56. return pr_chy;
  57. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <locale.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6.  
  7. int isSimple(int);
  8. int masX(int *, int);
  9. int masY(int **, int, int);
  10. void showMasX(int *, int);
  11. void showMasY(int **, int, int);
  12. void generateMasX(int *, int);
  13. void generateMasY(int **, int, int);
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17.     setlocale(LC_ALL, "RU");
  18.  
  19.     int itog, prX, prY;
  20.     int *X = (int *)calloc(50, sizeof(int));
  21.     int **Y = (int **)calloc(12, sizeof(int *));
  22.     for(int i=0; i<12; ++i){
  23.         Y[i] = (int *)calloc(5, sizeof(int));}
  24.     generateMasX(X, 50);
  25.     generateMasY(Y, 12, 5);
  26.     printf("Массив X:\n");
  27.     showMasX(X, 50);
  28.     printf("Матрица Y:\n");
  29.     showMasY(Y, 12, 5);
  30.  
  31.     prX = masX(X, 50);
  32.     prY = masY(Y, 12, 5);
  33.     itog = prY  +prX;
  34.     printf("Количество простых чисел: %d\n", itog);
  35.  
  36.     for(int i=0; i<12; ++i){
  37.         free(Y[i]);}
  38.     free(Y);
  39.     free(X);
  40.    
  41.     printf("Нажмите любую клавишу для выхода\n");
  42.     _getch();
  43.  
  44.     return 0;
  45. }
  46.  
  47. int isSimple(int p)
  48. {
  49.     for(int i=2; i*i<p; ++i){
  50.         if(p % i == 0){
  51.             return 0;}
  52.     }
  53.     return 1;
  54. }
  55.  
  56. int masX(int *x, int n)
  57. {
  58.     int sum = 0;
  59.     for(int i=0; i<n; ++i){
  60.         if(isSimple(x[i])){
  61.             ++sum;}
  62.     }
  63.     return sum;
  64. }
  65.  
  66. int masY(int **y, int n, int m)
  67. {
  68.     int sum = 0;
  69.     for(int i=0; i<n; ++i){
  70.         for(int j=0; j<m; ++j){
  71.             if(isSimple(y[i][j])){
  72.                 ++sum;}
  73.         }
  74.     }
  75.     return sum;
  76. }
  77.  
  78. void showMasX(int *x, int n)
  79. {
  80.     for(int i=0; i<n; ++i){
  81.         printf("%d ", x[i]);
  82.     }
  83.     printf("\n");
  84. }
  85.  
  86. void showMasY(int **y, int n, int m)
  87. {
  88.     for(int i=0; i<n; ++i){
  89.         for(int j=0; j<m; ++j){
  90.             printf("%d ", y[i][j]);
  91.         }
  92.         printf("\n");
  93.     }
  94. }
  95.  
  96. void generateMasX(int *x, int n)
  97. {
  98.     srand(time(NULL));
  99.     for(int i=0; i<n; ++i){
  100.         x[i] = rand() % 101;
  101.     }
  102. }
  103.  
  104. void generateMasY(int **y, int n, int m)
  105. {
  106.     srand(time(NULL));
  107.     for(int i=0; i<n; ++i){
  108.         for(int j=0; j<m; ++j){
  109.             y[i][j] = rand() % 101;
  110.         }
  111.     }
  112. }

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы