Задачи аналитической геометрии. Лабораторная работа №2
Формулировка задания Код программы #include <cstring> #include <stdlib.h> #include<stdio.h> #include<math.h> using namespace std; struct point{double x;double y;}; point points[1000]; int Check() { int n=1; while(n) { int s; fflush(stdin); if(scanf("%d",&s)!=1) {puts("Error.Repeat");} else return s; } } int _tmain(int argc, _TCHAR* argv[]) { puts("How many points?"); int n=Check(); for(int i=0;i<n;i++) { puts("X:"); points[i].x=Check(); puts("Y:"); points[i].y=Check(); } /*ищем минимальное расстояние между двумя заданными точками чтобы получить радиус, делим полученное минимальное расстояние пополам и получаем значение радиуса и округляем, для удобства, до трёх знаков после запятой*/ double min=sqrt(pow(points[1].x-points[2].x,2)+pow(points[1].y-points[2].y,2)); for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) { double a=sqrt(pow(points[j].x-points[i].x,2)+pow(points[j].y-points[i].y,2)); if(a<min) min=a; } min=min/2; min = floor(min*1000)/1000; printf("%s%g\n","Radius found: ",min); system("pause"); return 0; }
Обработка матриц и массивов. Лабораторная работа №3 Формулировка задания Код программы #include "stdafx.h" #include <cstring> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <windows.h> using namespace std; int matrix[20][20]; int x1[20]; int x2[20]; int b[20];
void gotoxy(int x, int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } int Check() { int n=1; while(n) { int s; fflush(stdin); if(scanf("%d",&s)!=1) {puts("Error.Repeat");} else return s; } } //функция выдает 1 если х решение, 0 если нет. //для этого мы пересножаем матрицу А с вектором х и сравниваем с вектором в int decision(int matrix[20][20],int x[20],int b[20],int n) { int k=1; for(int i=0;i<n;i++) { int m=0; for(int j=0;j<n;j++) { m+=matrix[i][j]*x[j]; } if((m!=b[i])||(k==0)) k=0; } if (k==1) return 1; else return 0; } int _tmain(int argc, _TCHAR* argv[]) { puts("Enter n"); int n=Check(); puts("Enter matrix"); for(int i=0;i<n;i++) for(int j=0;j<n;j++) matrix[i][j]=Check(); puts("Enter x1"); for(int i=0;i<n;i++) x1[i]=Check(); puts("Enter x2"); for(int i=0;i<n;i++) x2[i]=Check(); puts("Enter b"); for(int i=0;i<n;i++) b[i]=Check(); system("cls"); puts("Matrix"); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%d%s",matrix[i][j]," "); puts(""); } gotoxy(40,0); puts("x1"); for(int i=0;i<n;i++) { gotoxy(40,i+1); printf("%d%s",x1[i]," "); } puts(""); gotoxy(50,0); puts("x2"); for(int i=0;i<n;i++) { gotoxy(50,i+1); printf("%d%s",x2[i]," "); } puts(""); gotoxy(60,0); puts("b"); for(int i=0;i<n;i++) { gotoxy(60,i+1); printf("%d%s",b[i]," "); } puts(""); puts(""); if(decision(matrix,x1,b,n)) puts("A*x1=b"); else puts("A*x1!=b"); if(decision(matrix,x2,b,n)) puts("A*x2=b"); else puts("A*x2!=b"); system("pause"); return 0; }
Обработка символьной, строковой и текстовой информации. Лабораторная работа №4 Формулировка задания
Код программы #include "stdafx.h" #include <stdio.h> #include <iostream> #include <string.h> #include <cstring> #include <stdlib.h> #include <cstdlib> #include <conio.h> int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, ""); char string[201]; fflush(stdin); puts("Введите предложение, содержащее не более 200 символов.Символами конца предложеня являются .!?, после них предложение не считывается. Символы , ; () : "" разделители"); gets(string); string[200]='\0'; strlwr(string); //делю строку по символу конца предложения и использую далее его левую часть char *str= strtok(string, ".!?"); char **a; a = (char **)calloc(20, sizeof(char *)); for (int i = 0; i < 40; i++) a[i] = (char *)calloc(20, sizeof(char)); int n=0; //делю полученную строку на подстроки по разделительным символам str = strtok(str, " ,.:;()-\""); a[n]=str; n++; while (str != NULL) { a[n]=str; str = strtok (NULL, " ,.:;()-\""); n++; } puts("Слова и их количество в предложении"); //считаю сколько встрчается каждае слово int d[40];//для этого создаю массив, в котором для повторяющихся слов значение соответствующей ячейки массива меняю на 0 for(int i=0;i<n;i++) d[i]=1; for(int i=0;i<n;i++) { int f=1; if(d[i]==1) { for(int j=i+1;j<n;j++) if(strcmp(a[i],a[j])==0) { f++;d[j]=0;} if(i!=0) printf("%s%s%d",a[i]," ",f); else printf("%s%s%d",a[i]," ",f-1); puts(""); } } system("pause"); return 0; }
Рекурсия. 5.1 Лабораторная работа №5.1 Формулировка задания
Код программы #include "stdafx.h" #include <iostream> int *a; int n; int Check() { int n=1; while(n) { int s; fflush(stdin); if(scanf("%d",&s)!=1) {puts("Error.Repeat");} else return s; } return 0; } int min1(int k) { if(k<n) return min(a[k],min1(k+1)); else return a[n-1]; } int min(int *a) { return min1(0); } int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, ""); puts("Введите длину вектора"); n=Check(); a = (int *)calloc(n, sizeof(int )); puts("Введите вектор"); for(int i=0;i<n;i++) a[i]=Check(); printf("Минимум: %d\n",min(a)); free(a); system("pause"); return 0; }
5.2 Лабораторная работа №5.2 Формулировка задания
Код программы #include "stdafx.h" #include <iostream> int edges[100][100]; int mark[100]; int prior[100]; int finish; int start; int n; void DFS(int v, int from)//обход в глубину { if (mark[v] != 0) // Если мы здесь уже были, то тут больше делать нечего { return; } mark[v] = 1; // Помечаем, что мы здесь были prior[v] = from; // Запоминаем, откуда пришли if (v == finish) // Проверяем, конец ли return; for (int i = 0; i < n; i++) // Для каждого ребра { if(edges[v][i]==1) DFS(i, v); // Запускаемся из соседа } }
int Check() { while(1) { int s; fflush(stdin); if(scanf("%d",&s)!=1) {puts("Введите число!");} else return s; } return 0; } int Checkm() { while(1) { int s; fflush(stdin); if(scanf("%d",&s)!=1) {puts("Введите число!");} else if((s==0)||(s==1)) return s; else puts("0 или 1! Повторите"); } return 0; } int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, ""); puts("Введите количество комнат"); n=Check(); puts("Введите матрицу соединений (1-соединено,0-нет)"); for(int i=0;i<n;i++) for(int j=0;j<n;j++) { printf("%s%d%s%d%s\n","Комнаты: ",i+1,"-",j+1,":"); edges[i][j]=Checkm(); } puts("Введите первую комнату"); int in; int k=1; while(k) { fflush(stdin); if(scanf("%d",&in)!=1) {puts("Введите число!");} else if((in>=0)&&(in<=n)) k=0; else puts("Число не превышающее количество комнат!"); } in--; puts("Введите вторую комнату"); int jn; k=1; while(k) { fflush(stdin); if(scanf("%d",&jn)!=1) {puts("Введите число!");} else if((jn>=0)&&(jn<=n)) k=0; else puts("Число не превышающее количество комнат!"); } jn--; finish=jn; start=in; for(int i=0;i<n;i++) mark[i]=0; for(int i=0;i<n;i++) prior[i]=0; DFS(start,-1);
int ans[100]; int i=0; for (int v = finish; v != start; v = prior[v]) // Проходим по пути из конца в начало { ans[i]=v; // Запоминаем вершину i++; } ans[i]=start; system("cls"); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%d ",edges[i][j]); puts(""); } puts("Путь"); for(i;i>=0;i--)// Переворачиваем путь printf("%d ",ans[i]+1); puts(""); system("pause"); return 0; }
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (462)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |