Showing posts with label Russian. Show all posts
Showing posts with label Russian. Show all posts

С Программа для поиска минимального и максимального элементов массива

Как написать программу C , чтобы найти минимальный и максимальный элементы массива в C Programming Language ?


С Программа для поиска минимального и максимального элементов массива

  1. #define N 14
  2. //*****************************************************
  3. int massiv[N];
  4. //ТУТ ТЕБЕ НУЖНО НАЙТИ МИНИМУМ И МАКСИМУМ
  5. //Максимум и минимум - первый элемент массива
  6. int max_value=massiv[0];
  7. int min_value=massiv[0];
  8. //Позиция максимума и минимума - первый элемент
  9. int max_position=0;
  10. int min_position=0;
  11.  
  12. puts("Найдём минимальный и максимальный элементы массива.");
  13. for (= 1; i < N; i++) {
  14.   if(massiv[i]>max_value) {
  15.     max_value=massiv[i];
  16.     max_position=i;
  17.   }
  18.     if(massiv[i]<min_value) {
  19.     min_value=massiv[i];
  20.     min_position=i;
  21.   }
  22. }
  23. //Выведем результат на экран
  24.   printf("Минимальный элемент массива - %dй, его значение - %d\n",  min_position+1, min_value);
  25.   printf("Максимальный элемент массива - %dй, его значение - %d\n", max_position+1, max_value);
  26. //ПРОСТЕЙШАЯ СОРТИРОВКА
  27. for (= 1; i < N; i++) {
  28. for (= 1; j < N - 1 - i; j++) {
  29.   if(massiv[j]>massiv[j+1]) {
  30.     int temp = massiv[j];
  31.     massiv[j] = massiv[j+1];
  32.     massiv[j+1] = temp;
  33.   }
  34. }
  35. }

С программу для подсчета количества слов в строке

Как написать программу C , чтобы подсчитать количество слов в строке в C Programming Language ?


Эта программа С до Подсчитайте количество слов в строке.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. // Подсчитать количество слов в строке
  6. int wcount(char *s)
  7. {
  8.     char *= s;
  9.     int count = 0;
  10.  
  11.     while (1)
  12.     {
  13.         while (*== ' ')
  14.             p++;
  15.         if (!*p)
  16.             break;
  17.         count++;
  18.         while (*&& (*!= ' '))
  19.             p++;
  20.     }
  21.  
  22.     return count;
  23. }
  24.  
  25. void GetWordIndex(char *s, int *count)
  26. {
  27.     int size = 0;
  28.  
  29.     int i = 0;
  30.     while (1)
  31.     {
  32.         while (s[i] == ' ')
  33.                 i++;
  34.  
  35.         if (s[i] == '\0')
  36.                 break;
  37.  
  38.         count[size] = i;
  39.         size++;
  40.  
  41.         while (s[i] != '\0' && s[i] != ' ')
  42.                 i++;
  43.  
  44.         if (s[i] == '\0')
  45.                 break;
  46.     }
  47. }
  48.  
  49.  
  50. void csort(char *src, char *dest)
  51. {
  52.     int len = strlen(src);
  53.     int n = wcount(src);
  54.  
  55.     int count[n];
  56.     int new_count[len];
  57.     int j;
  58.     for (= 0; j < len; j++)
  59.         new_count[j] = 0;
  60.  
  61.     char *= src;
  62.  
  63.     GetWordIndex(src, count);
  64.     int i;
  65.  
  66.     for (= 0; i < len, p[i] != '\0' && p[i] != ' '; i++)
  67.         for (= 0; j < n; j++)
  68.             new_count[count[j]]++;
  69.  
  70.     for (= 0; i < n; i++)
  71.         printf("%d, ", new_count[i]);
  72.  
  73.  
  74. }
  75.  
  76. int main()
  77. {
  78.     char *scr = (char *)malloc(1024);
  79.     gets(scr);
  80.     char *dest = (char *)malloc(1024);
  81.     csort(scr, dest);
  82.  
  83.     free(scr);
  84.     free(dest);
  85.     return 0;
  86. }

С Программа для координирует испытательных образцов

Как написать программу C , чтобы координаты испытательные образцы в Язык программирования C ?

ограничение на количество вершин в файле = SIZE, определяем реальное количество вершин
максимальное значение х
максимальный у для заданного х, пихать надо массив со ВСЕМИ точками
элементы с четными индексами - иксы
берем все точки с необходимым иксом и ищем там самую большую
минимальный у для заданного х, пихать надо массив со ВСЕМИ точками
подсчет площади столбиками, дырки пропускает
тут в итоге будут ВСЕ точки
amount - количество промежуточных по горизонтали точек
вот этот кусок работает неправильно, тут мы кладем в массив arrcomplete все точки


Solution:

  1. #include <stdio.h>//находит максимум/минимум неправильно
  2. #define SIZE 100
  3. #define PNUM 16
  4.  
  5. int find_arr_size (int* arr, int* arr_size) //ограничение на количество вершин в файле = SIZE, определяем реальное количество вершин
  6. {
  7.     int i = 0;
  8.     arr_size = SIZE;
  9.     for (= 0 ; i < SIZE ; i++)
  10.     {
  11.         if ((arr[i] == 0) && (arr[i+1] == 0) && (arr[i+2] == 0) && (arr[i+3] == 0))
  12.         {
  13.             arr_size = i - 1;
  14.             break;
  15.         }
  16.     }
  17.     return arr_size;
  18. }
  19. int findmaxx (int arr[], int arr_size) //максимальное значение х
  20. {
  21.     int number, maximum, i;
  22.     number = maximum = 0;
  23.     for (= 0 ; i < 2 * arr_size ; i++)
  24.     {
  25.         number = arr[i];
  26.         if (% 2 == 0)
  27.         {
  28.             if (number > maximum)
  29.                 {
  30.                     maximum = number;
  31.                 }
  32.         }
  33.     }
  34.     return maximum;
  35. }
  36. int findminx (int arr[], int arr_size) //минимальное значение х
  37. {
  38.     int number, minimum, i;
  39.     number = minimum = 0;
  40.     for (= 0 ; i < 2 * arr_size ; i++)
  41.     {
  42.         number = arr[i];
  43.         if (% 2 == 0)
  44.         {
  45.             if (number < minimum)
  46.                 {
  47.                     minimum = number;
  48.                 }
  49.         }
  50.     }
  51.     return minimum;
  52. }
  53. int findmaxy (int x, int arr[], int arr_size) //максимальный у для заданного х, пихать надо массив со ВСЕМИ точками
  54. {
  55.     int number, maximum, i;
  56.     number = maximum = 0;
  57.     for (= 0 ; i < 2 * arr_size ; i++)
  58.     {
  59.         if (% 2 == 0) // элементы с четными индексами - иксы
  60.         {
  61.             if (arr[i] == x) // берем все точки с необходимым иксом и ищем там самую большую
  62.                 {
  63.                     number = arr[i+1];
  64.                     if (number > maximum)
  65.                     {
  66.                         maximum = number;
  67.                     }
  68.                 }
  69.         }
  70.     }
  71.     return maximum;
  72. }
  73. int findminy (int x, int arr[], int arr_size) //минимальный у для заданного х, пихать надо массив со ВСЕМИ точками
  74. {
  75.     int number, minimum, i;
  76.     number = minimum = 0;
  77.     for (= 0 ; i < 2 * arr_size ; i++)
  78.     {
  79.         if (% 2 == 0)
  80.         {
  81.             if (arr[i] == findmaxy(x, arr, arr_size))
  82.                 {
  83.                     number = arr[i+1];
  84.                     if (number < minimum)
  85.                     {
  86.                         minimum = number;
  87.                     }
  88.                 }
  89.         }
  90.     }
  91.     return minimum;
  92. }
  93. int calculate_area (int arr[], int arr_size) //подсчет площади столбиками, дырки пропускает
  94. {
  95.     int maxx = findmaxx(arr, arr_size);
  96.     int minx = findminx(arr, arr_size);
  97.     int i;
  98.     int area = 0;
  99.     for (= 0; i < (maxx-minx)+1 ; i++)
  100.     {
  101.         area += findmaxy(i, arr, arr_size) - findminy(i, arr, arr_size);
  102.     }
  103.     return area;
  104. }
  105. int main()
  106. {
  107.     FILE *figure;
  108.     figure = fopen("figure.txt", "r");
  109.     int arr[SIZE] = {0};
  110.     int arr_size = 0;
  111.     int i, j, k, s;
  112.     i = 0;
  113.     int arrcomplete[PNUM] = {0}; // тут в итоге будут ВСЕ точки
  114.     int ymax, ymin, amount, number; //amount - количество промежуточных по горизонтали точек
  115.     ymax = ymin = amount = 0;
  116.  
  117.     while (fscanf(figure, "%d", &arr[i]) != EOF) //получили координаты вершин
  118.     {
  119.         //printf("%d ", arr[i]);
  120.         i++;
  121.     }
  122.     fclose(figure);
  123.     arr_size = find_arr_size(arr, arr_size); //знаем количество вершин
  124.     i = j = k = s = 0;
  125.     printf("\n started");
  126.  
  127.     //вот этот кусок работает неправильно, тут мы кладем в массив arrcomplete все точки
  128.     for (= 0; i < 2 * arr_size ; i++)
  129.     {
  130.         //printf("i=%d ", i);
  131.         for (= 0 ; j < 2 * arr_size ; j++)
  132.         {
  133.             //printf("j=%d ", j);
  134.             if ((arr[i] == arr[j]) && (arr[i] % 2 == 1) && (arr[j] % 2 == 1) && (arr[i-1] != arr[j-1])) // все пары точек с одинаковыми У
  135.             {
  136.                 if (arr[i-1] > arr[j-1]) //для каждой пары смотрим, у кого х больше
  137.                 {
  138.                     ymax = arr[i-1];
  139.                     ymin = arr[j-1];
  140.                 }
  141.                 else
  142.                 {
  143.                     ymax = arr[j-1];
  144.                     ymin = arr[i-1];
  145.                 }
  146.                 for (= 0 ; k < (ymax - ymin) ; k++) //прогоняем все иксы в этом промежутке, включая сами точки
  147.                 {
  148.                     number = k + ymin; //х точки пробегает от ymin до ymax
  149.                     for (= 0 ; s < PNUM ; s++) //проверяем, нет ли такой точки уже
  150.                     {
  151.                         if (arrcomplete[s] == number) //если есть, зануляем данный х (просто так х никогда не равен -1)
  152.                         {
  153.                             number = -1;
  154.                         }
  155.                         if (number != -1) //новая точка! увеличиваем кол-во точек и записываем эту
  156.                         {
  157.                             arrcomplete[amount] = number;
  158.                             amount++;
  159.                             //printf("FOUND");
  160.                         }
  161.                     }
  162.                 }
  163.                 printf("\ny: %d xs: %d %d", arr[i], arr[i-1], arr[j-1]); //
  164.             }
  165.         }
  166.     }
  167.     printf("\n ended");
  168.     printf("\nAMOUNT: %d", amount); // для тестируемой фигуры это число всех точек 42
  169.  
  170.     printf("\narea: %d", calculate_area(arrcomplete, arr_size + amount)); //уже для всего массива. должна быть 38
  171.  
  172.     return 0;
  173. }
  174. //координаты тестовой фигуры:
  175. /*
  176. 0 5
  177. 0 0
  178. 3 2
  179. 3 5
  180. 5 2
  181. 5 4
  182. 5 0
  183. 5 1
  184. 8 1
  185. 8 2
  186. 8 4
  187. 8 6
  188. 9 4
  189. 9 2
  190. 12 6
  191. 12 4
  192. */