Вторник, 21.05.2024, 03:37
Приветствую Вас, Гость

БИЛЕТ 3.

1.     Вещественные типы данных, их представление в памяти.

      float - число с плавающей точкой одинарной точности;
    
double - число с плавающей точкой двойной точности.

     Тип long double предназначен для арифметики с плавающей точкой повышенной точности.

     Размеры объектов с плавающей точкой зависят от реализации; float, double и long double могут представляться одним размером, а могут - двумя или тремя разными размерами.

Операции: присваивания, все арифметические, сравнения,

2.     Оператор цикла for.

Синтаксис: for (выражение; выражение; выражение) оператор

В операторе for первое выражение вычисляется один раз, тем самым осуществляется инициализация цикла. На тип этого выражения никакие ограничения не накладываются. Второе выражение должно иметь арифметический тип или тип указателя; оно вычисляется перед каждой итерацией. Как только его значение становится равным 0, for прекращает свою работу. Третье выражение вычисляется после каждой итерации и, следовательно, выполняет повторную инициализацию цикла. Никаких ограничений на его тип нет. Побочные эффекты всех трех выражений заканчиваются по завершении их вычислений.


3.    Даны два массива. Массив А состоит из N элементов , массив В состоит из М элементов. Оба массива отсортированы по убыванию. Разработать программу для слияния этих массивов в отсортированный по убыванию массив С, не содержащий одинаковых элементов.

# include <stdio.h>

# include <stdlib.h>

  const N=10,M=10;

  int a[N],b[M],c[N+M];

void main()

{

  randomize();

  a[0]=-5;

  b[0]=-5;

  for (int i=1;i<N;i++)

    {

      a[i]=a[i-1]-random(3);

      b[i]=b[i-1]-random(3);

    }

  int x=0,y=0;

  i=0;

  while ((x<N)|(y<M))

    {

      if (((a[x]>=b[y])|(y>M-1))&(x<=N-1))

            {

              if (c[i-1]!=a[x]) { c[i]=a[x]; i++;}

              x++;

            }

      else if (((a[x]<=b[y])|(x>N-1))&(y<=M-1))

            {

              if (c[i-1]!=b[y]) { c[i]=b[y]; i++;}

              y++;

            }

    }

}


4.   Напишите функцию сложения двух простых дробей a/b и c/d. В результате должна получаться правильная несократимая дробь или смешанное число.

 

# include <stdio.h>

  const a=3,b=5,c=7,d=13;

  int ch,zn,cel;

void sokr(int &x,int &y)

{ int max=(x<y)?y:x;

  for (int i=2;i<=max;i++)

    if ((x%i==0)&(y%i==0))

     {

       x/=i;

       y/=i;

       max=(x<y)?y:x;

       i=2;

     }

}

void main()

{

  if (b==d) {ch=a+c;     zn=b;}

  else      {ch=a*d+b*c; zn=b*d;}

  cel=ch/zn;

  ch-=cel*zn;

  sokr(ch,zn);

  printf("\n%d %d/%d",cel,ch,zn);

}