Advertisement
Juzuu

lab5

Dec 10th, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <locale.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. #include <ctype.h>
  7.  
  8. #define TElement unsigned char
  9. #define N 10
  10. #define MIN 21
  11. #define MAX 254
  12.  
  13. int Select(TElement m[],int n,TElement rez[],int r, TElement Min, TElement Max);// Объявление функции select для ее корректной работы
  14.  
  15. int main(void){
  16.     setlocale(LC_ALL, "Rus");
  17.     int ndig, npun;
  18.     TElement m[N];
  19.     TElement dig[N];
  20.     TElement pun[N];
  21.     Randomize();
  22.     title();
  23.     printf("ЗАПОЛНЕНИЕ МАССИВА \n");
  24.     Filling(m,N,MIN,MAX);
  25.     printf ("\nРАСПЕЧАТКА ИСХОДНОГО МАССИВА \n");
  26.     Print(m,N);
  27.     puts ("МАССИВ ЦИФР");
  28.     ndig=Select(m,N,dig,0,'0','9');
  29.     BSort(dig,ndig);
  30.     Print(dig,ndig);
  31.     puts ("МАССИВ ЗНАКОВ ПУНКТУАЦИИ");
  32.     npun=SelectP(m,N,pun,0);
  33.     Print(pun,npun);
  34.     return 0;
  35. }
  36.  
  37. void Randomize(){
  38.             srand(time(0));
  39.     }
  40.  
  41. int Random(int diapazon){
  42.  return (rand() % diapazon);
  43. }
  44.  
  45. void Filling(TElement m[],int n, TElement MinValue, TElement MaxValue){
  46.     int i;
  47.     TElement Diapazon;
  48.     Diapazon=MaxValue-MinValue;
  49.     for (i=0;i<n;i++)
  50.         m[i]=(TElement)Random(Diapazon)+MinValue;
  51. }
  52.  
  53. void Print(TElement m[],int n){
  54.     int i;
  55.     if (n>0){
  56.         printf("Номер   ");
  57.         for(i=0;i<n;i++)
  58.             printf("%4d",i);
  59.         printf("\nЗначение");
  60.         for(i=0;i<n;i++)
  61.             printf("%4c",m[i]);
  62.         puts("\n");
  63.     }
  64.     else
  65.         puts ("\n Массив пуст \n");
  66. }
  67.  
  68. int Select(TElement m[],int n,TElement rez[],int r, TElement Min, TElement Max){
  69.     int i;
  70.     for (i=0;i<n;i++)
  71.         if((m[i]>=Min)&&(m[i]<=Max)){
  72.             rez[r]=m[i];
  73.             r++;
  74.         }
  75.     return r;
  76. }
  77. int SelectP(TElement m[],int n,TElement rez[],int r){
  78.     int i;
  79.     for(i=0; i<n;i++)
  80.         if (ispunct(m[i]) || m[i]=='?' || (int)m[i]==63 || m[i]=='?'){
  81.             rez[r]=m[i];
  82.             r++;
  83.     }
  84.     return r;
  85. }
  86. void Obmen(TElement m[], int n, int i1, int i2){
  87.     int tmp;
  88.     tmp=m[i1];
  89.     m[i1]=m[i2];
  90.     m[i2]=tmp;
  91. }
  92. void Bubble(TElement m[],int n, int up){
  93.     int i;
  94.     for (i=n-1;i>up;i--)
  95.         if (m[i]<m[i-1])
  96.             Obmen(m,n,i,i-1);
  97. }
  98.  
  99.  
  100. void BSort(TElement m[],int n){
  101.     int i;
  102.     for (i=0;i<n-1;i++)
  103.         Bubble(m,n,i);
  104. }
  105. void title()
  106. {
  107.     printf (" Лабораторная работа N 5 вариант 13 \n Тема: Массивы \n");
  108.     printf (" Выполнил студент гр.ИСТбд-12 Шарапов А.Н.\n\n");
  109.     printf (" Из исходного массива символов, заполненного случайным образом\n");
  110.     printf ("символами с кодами в диапазоне от 21 до 254\n");
  111.     printf ("выделить в отдельные массивы символы цифр и знаков препинания.\n");
  112.     printf (" Провести сортировку полученных массивов.Для контроля результата\n");
  113.     printf ("сделать распечатку массивов в том числе исходного\n\n\n");
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement