Добавил:
Оставь надежду всяк сюда поступивший Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Синников С++ / отчёт вариант 7

.docx
Скачиваний:
26
Добавлен:
13.01.2019
Размер:
315.21 Кб
Скачать

Черныш Э.И. 19101110

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ »

Факультет математики

Кафедра Информатики и вычислительной математики

Отчет о лабораторном практикуме по началам программирования

Выполнила Черныш Э.И.

Группа 12101.150

Проверил: Рубцова Т. П.

оценка дата

2017

Лабораторная работа 1

Задание:

Найти значение алгебраического выражения, соответствующего варианту задания. Вывести результаты на печать, сохраняя 4 знака после запятой (самостоятельно посмотрите форматированный вывод). Все результаты выводить в развернутом виде (например: "Сумма чисел А и B равна 3.7854"). Значения вводимых величин должны иметь не менее четырех значащих цифр и задаются студентом самостоятельно.

B7

a=b=0 a=1, b= -1 a=b= -1 a=1000000,b=0 a=b=1

Текст программы:

#include <stdio.h>  #include <stdlib.h>  #include <locale.h>  #include <math.h>  int main()  {  setlocale(LC_ALL,"RUS");  double a,b;  printf("Введите а: ");  scanf("%lf",&a);  printf("Введите b: ");  scanf("%lf",&b);  double s = exp(a*a-13.4*b);  if(s>=0 && a+b>0 || s<=0 && a+b<0)  {  double res = pow(cos(a+b*b),3.0)*sqrt(s/pow(a+b,3));  printf("%.4lf\n",res);  }  else  {  printf("Невозможно посчитать!\n");  }  return 0;  }

Результат выполнения контрольного примера: a=1 b=0

Лабораторная работа № 2

Задание:

Следующее и предыдущее

Текст программы:

#include <stdio.h>  #include <stdlib.h>  int main()  { int a,b,c;  printf("a=");  scanf("%d", &a);  b=a+1;  c=a-1;  printf("The next number for the number %d\ ", a);  printf("is %d", b);  printf(".\n ");  printf("The previous number for the number %d\ ", a);  printf("is %d", c);  printf(".\n ");  return 0;  }

Результат выполнения контрольного примера:

а=122

Лабораторная работа № 3,1

Задание:

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

Текст программы:

#include <stdio.h>  #include <stdlib.h>  #include <locale.h>  #include <math.h>  int main()  {  setlocale(LC_ALL,"RUS");  double x;  printf("Введите х: ");  scanf("%lf",&x);  if(x>=-8 && x<=-5) /// если x=-5 лежит в этом отрезке, т.к это точка разрыва и непонятно, y=-3 или y=-2, предположили что у=-3;  {  printf("y = -3,00");  }  else if(x>-5&&x<=-3)  {  printf("y = %.2lf",3+x);  }  else if(x>-3 && x<3)  {  printf("y = %.2lf",sqrt(9-x*x));  }  else if(x>=3 && x<8)  {  printf("y = %.2lf",(3*x-9)/5);  }  else if(x>=8 && x<=10)  {  printf("y = 3,00");  }  return 0;  }

Результат выполнения контрольного примера:

Лабораторная работа № 3,2

Задание:

Разработать консольное приложение для того, чтобы определить принадлежность заданной точке заштрихованной области:

Текст программы:

#include <stdio.h>  #include <stdlib.h>  #include <math.h>  #include <locale.h>  int main()  {  setlocale(LC_ALL,"RUS");  printf("Введите радиус R: ");  double r; scanf("%lf",&r);  double x,y;  printf("Введите x: ");  scanf("%lf",&x);  printf("Введите y: ");  scanf("%lf",&y);  if(x>=0 && x<=2*r && y>=0)  {  if(pow(x-r,2)+y*y<=r*r)  {  printf("Точка принадлежит области!");  }  else  {  printf("Точка не принадлежит области!");  }  }  else if(x>=-r && x<=0 &&y>=-r && y<=0)  {  if(pow(x+r,2)+pow(y+r,2)>=r*r)  {  printf("Точка принадлежит области!");  }  else  {  printf("Точка не принадлежит области!");  }  }  else  {  printf("Точка не принадлежит области!");  }  return 0;  }

Результат выполнения контрольного примера:

Лабораторная работа № 3,3

Задание:

Текст программы:

#include <stdio.h>  #include <stdlib.h>  #include <locale.h>  #include <math.h>  int main()  {  setlocale(LC_ALL,"RUS");  double a = 1.45;  double pi = 3.1415;  double e = 0.0001;  double x,k;  printf("Введите x: ");  scanf("%lf",&x);  printf("Введите точность E: ");  scanf("%lf",&e);  int i=1;  double t = x*cos(a+(pi*i/2));  double s = t;  while((fabs(t*k-t)<e))  {  i++;  k =(x/i)*(cos(a+(pi*i/2))/cos(a+(pi*(i-1)/2)));  t=t*k;  s+=t;  }  double res = cos(a)-s;  printf("Ответ: %.3lf",res);  return 0;  }

Результат выполнения контрольного примера:

Лабораторная работа № 4

Задание:

Перечислить все пары «соседних» простых чисел, не превосходящих N, троичные представления которых получаются друг из друга записью цифр в обратном порядке (первая такая пара – это 5 и 7).

Текст программы:

#include <stdio.h>  #include <stdlib.h>  #include <locale.h>  #include <string.h>  char * inverce(char*);  char * decTo3(int);  int isEquals(char*,char*);  int main()  {  setlocale(LC_ALL,"RUS");  int n;  int i,k,l;  printf("Введите число N: "); scanf("%d",&n);  int s[n]; s[0]=0;  for(i=1;i<n;i++)  {  s[i]=1;  }  for(k=1; (k+1)*(k+1)<n; k++)  {  if(s[k]==1)  {  for(l=(k+1)*(k+1)-1; l<n; l+=k+1)  {  s[l]=0;  }  }  }  int *a=malloc(999999); int aN=0;;  for(i=0;i<n;i++)  {  if(s[i]==1)  {  a[aN]=i+1;  aN++;  }  }  for(i=0; i<aN;i++)  {  printf("%d ",a[i]);  }  printf("\n");  for(i=0;i<aN-1;i++)  {  char *g,*h;  g=decTo3(a[i]); h= inverce(decTo3(a[i+1]));  if(isEquals(g,h))  {  printf("Пара %d , %d -> %s : %s\n",a[i],a[i+1],decTo3(a[i]),decTo3(a[i+1]));  }  }  return 0;  }  char * inverce(char *t)  {  int i;  int k = strlen(t) - 2;  int m = k / 2;  for (i = 0; i <= m; i++)  {  char tmp = t[i];  t[i] = t[k - i + 1];  t[k - i + 1] = tmp;  }  return t;  }  char * decTo3(int x)  {  char *t = (char *)malloc(1000);  int i = 0;  do  {  t[i++] = x % 3 + '0';  x = x / 3;  } while (x != 0);  t[i] = '\0';  return inverce(t);  }  int isEquals(char* g, char* h)  {  int i;  if(strlen(g)!=strlen(h)){return 0;}  for(i=0;i<strlen(g);i++)  {  if(g[i]!=h[i]) return 0;  }  return 1;  }

Результат выполнения контрольного примера:

Лабораторная работа № 6

Задание:

Задано множество точек M на плоскости. Определить, верно ли, что для каждой точки A M существует точка В M (A ≠ B) такая, что не существует двух точек множества M, лежащих по разные стороны от прямой AB.

Текст программы:

#include <stdio.h>  #include <stdlib.h>  #include <locale.h>  int main()  {  setlocale(LC_ALL,"RUS");  int n;  int i,j,k;  printf("Введите кол-во точек на множестве M: "); scanf("%d",&n);  int x[n], y[n];  int checkPoint[n];  printf("Введите точки (координаты х и у через пробел)\n");  for(i=0;i<n;i++)  {  printf("M%d: ",i+1);  scanf("%d %d",&x[i],&y[i]);  checkPoint[i]=0;  }  int f;int leftSide=0, rightSide=0;  for(i=0;i<n-1;i++)  {  for(j=i+1;j<n;j++)  {  leftSide=0; rightSide=0;  for(k=0;k<n;k++)  {  f = (x[k]-x[i])*(y[j]-y[i])-(y[k]-y[i])*(x[j]-x[i]);  if(f>0) leftSide=1;  if(f<0) rightSide=1;  }  if(leftSide==0 || rightSide ==0) {checkPoint[i]=1; checkPoint[j]=1;}  }  }  for(i=0;i<n;i++)  {  if(checkPoint[i]==0)  {  printf("Условие не выполнено, не для каждой точки A существует точка B, такая, что что не существует двух точек множества M, лежащих по разные стороны от прямой AB.");  return 0;  }  }  printf("Условие выполнено! Для каждой точки A существует точка B, такая, что что не существует двух точек множества M, лежащих по разные стороны от прямой AB.");  return 0;  }

Результат выполнения контрольного примера:

Соседние файлы в папке Синников С++