Механико-математический факультет

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.Г. ЧЕРНЫШЕВСКОГО.

МЕХАНИКО-МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ

ОТЧЁТ

По дисциплине<<Основы информатики>>

Выполнил студент 1 курса 111 группы

Направление «прикладная математика и информатика»

Черменский Н. А.

________________________________

Преподаватель: доцент кафедры

информатики и программирования

факультета КНиНТ

Вахлаева К.П.

__

Саратов 2015

№1

Написать программу, которая подсчитывает площадь треугольника, заданного координатами вершин xl, yl, х2, у2, хЗ, уЗ.

· #include <iostream>
#include <cmath>
using namespace std;

int main() {
int x1, x2, x3, y1, y2, y3;
float a, b, c, p, S;
cout <<"x1="; cin>> x1;
cout <<"y1="; cin>> y1;
cout <<"x2="; cin>> x2;
cout <<"y2="; cin>> y2;
cout <<"x3="; cin>> x3;
cout <<"y3="; cin>> y3;

a = sqrt(x1*x1+y1*y1);
b = sqrt(x2*x2+y2*y2);
c = sqrt(x3*x3+y3*y3);
p = (a+b+c)/2;
S = sqrt((p-a)*(p-b)*(p-c));
cout << "S=" << S;
return 0;
}

Стандартные библиотеки. Консольный ввод вывод. Программа с единственной функцией.

Вводим х1 у1 х2 у2 х3 у3. Находим длину длинну стороны а b c ( по формуле корень из квадратов начала и конца линии). Находим полупериметр по формуле. И находим площадь по формуле корень из произведения полупериметра минус каждая сторона треугольника.

Тест № Дано Результат
2,2,3,3,4,4 S = 2.30289
3,4,5,6,7,8 S=5.3518
0,0,2,2,-2-2 S=0

№2

кратна ли числу А сумма цифр двухзначного числа

· #include <iostream>

· using namespace std;

·

· int main()

· {

· int A, B;

· cout << "read A" << endl;

· cin >> A;//кратное

· cout << "read B" << endl;

· cin >> B;//2-х значное число

· B = B / 10 + B % 10;

· if (A%B == 0) cout << "Yes";

· else cout << "No";

· return 0;

· }

Консольный ввод, вывод. Подключаем стандартные библиотеки. Программа с единственной функцией. Задаём число А и задаём В двузначным числом. Создаём сумму В. И смотрим кратно ли число А этой сумме.

Тест № Дано Результат
10, 30 No
3, 30 Yes
12, 22 Yes

№3

Разработать функцию f(x), которая в двузначном числе меняет цифры местами, а остальные числа оставляет без изменения. Продемонстрировать работу данной функции на примере.

· #include "stdafx.h"

· #include <iostream>

· #include <conio.h>

· using namespace std;

· int func(int x)

· {

· int n, c;

· if ((x > -100) && (x < 100))

· {

· n = x % 10;

· x = x / 10;

· c = n * 10 + x;

· }

· else { c = x; }

· return c;

· }

·

· int main()

· {

· int x, c, d;

· cout << "Vvedite 4islo x:"; cin >> x;

· c = func(x);

· cout << c << endl;

· _getch;

· return 0;

№1
№2
№3

· }

· Консольный ввод, вывод. Подключены стандартные библиотеки (conio.h для создания текстового интерфейса пользователя). Имеет функциональную структуру. Задаём в функции условие – если число находится в диапазоне от -99 до 99 то переменной n присваеваем остаток этого числа при делении на 10. После чего берём целую часть при /10 и выполняем c = n * 10 + x. Объявляем переменные вводим Х вызываем функцию и Получает символ из консоли без отображения. (Найдена ошибка. Не учёл числа от -9 до 9. Что бы исправить нужно if ((x>-100) && (x<100))изменить на if (((x>-100) && (x<100)) &&((x<-10)&&(x>10)))).

№4

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе» в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе. Области задаются графически следующим образом:

· #include <iostream>

· #include <cmath>

· using namespace std;

· int main()

· {

· float x;

· float y;

· cout << "x=";

· cin >> x;

· cout << "y=";

· cin >> y;

· if (fabs(x) < 40 && fabs(y) < 40) //точка вне области?

· cout << "Нет";

· else if (fabs(x) > 40 || fabs(y) > 40) // точка внутри области?

· cout << "Да";

· else

· cout << "На границе";

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Разбиваем программу на 3 ветви – 1 если точка снаружи фигуры, 2внутри, 3 на границе . После чего сверяем и выводим ответ.

№ теста Что ввели Что получили
Х=30; У=30 No
Х=50;У=50 Yes
X=40;Y=40 Na granice

№5

Дан пол человека: м - мужчина, ж - женщина. Вывести на экран возможные мужские и женские имена в зависимости от введенного пола.

· #include <iostream>

· using namespace std;

· int main()

· {

· cout<<"Men -m, Female - f"<< endl;

· char x;

· cin >> x;

· switch (x)

· {

· case 'm':

· cout << "Aркадий" << endl;

· case 6:

· cout << "Дима " << endl;

· case 3:

· cout << "Василевс" << endl;

· case 4:

· cout << "Григорий" << endl;

· case 5:

· cout << "Альберт" << endl;

· break;

· case 'f':

· cout << "Катя" << endl;

· case 7:

· cout << "Даша" << endl;

· case 8:

· cout << "Маша" << endl;

· case 9:

· cout << "Ирина" << endl;

· case 10:

· cout << "Настя" << endl;

· break;

· }

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Вводим пол (m – мужской, f – женский). С помощью оператора case определяем по какой ветви пойдём (по f или m) и в результате определения выводим определённые имена.

№6

Вывести на экран все целые числа из диапазона от А до В (А<В), оканчивающиеся на любую четную цифру (while ).

· #include <iostream>

· using namespace std;

·

· int main()

· {

· int a, b;

· cout << "vvedite interval ot A do B";

· cin >> a >> b;

· while (a<=b)

· {

· if (a % 2 == 0) cout << a << endl;

· a = a + 1;

· }

·

· return 0;

}

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Вводим интервал А В. Пока А <= B ищем остаток от деления на 2 от каждого числа. Если он = 0, то выводим еэто число на экран.

Ввод

1 10

Вывод 2 4 6 8 10

№7

Вывести на экран все целые числа из диапазона от А до В (А<В), оканчивающиеся на любую четную цифру (do while ).

· #include <iostream>

· using namespace std;

·

· int main()

· {

· int a, b;

· cout << "vvedite interval ot a do B";

· cin >> a >> b;

· do

· {if (a % 2 == 0) cout << a << endl;

· a = a + 1;

· } while (a <= b);

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Вводим интервал А В. Если первое число имеет отстаток 0 при делении на 2 то выводи его на экран и проверяем следующий элемент. Если ложно цикл завершается , но пока А <= B цикл возобновляется.

Ввод

1 10

Вывод 2 4 6 8 10

№8

Вывести на экран все целые числа из диапазона от А до В (А<В), оканчивающиеся на любую четную цифру (for ).

· #include "stdafx.h"

· #include <iostream>

· using namespace std;

·

· int main()

· {

· int a, b, i;

· cout << "vvedite interval ot a do B";

· cin >> a >> b;

· {for (i = a; b >= i; i++)

· if ((i % 10) % 2 == 0)

· cout << i << "\t";

· }

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Вводим интервал А В. Задаём цикл с помощью for. Пока B>= A ищем чётные числа с помощью if ((i % 10) % 2 == 0) и если такое число найдено – выводим его.

Ввод 1 10

Вывод 2 4 6 8 10

№9

Постройте таблицу значений функции y=f(x) для хе[а, Ь] с шагом h. (СТР 49 № 12)

· #include <iostream>

· #include <cmath>

· using namespace std;

· float f(float x)

· {

· if (x < 0) return 0;

· else if ((x>0)&&(x != 1)) return pow(x, 2) + 1;

· else if (x = 1) return 1;

· }

· int main()

· {

· float a, b, h, x;

· cout << "a="; cin >> a;

· cout << "b="; cin >> b;

· cout << "h="; cin >> h;

· cout << "x\tf(x)\h";

· for (x = a; x <= b; x += h)

· cout << x << "\t" << f(x) << endl;

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Создаём функцию которая разбивает наш пример на 3 ветви. После ввода данных решение пойдёт по одной из ветвей.

Ввод

a= -1

b= 2

h= 0.5

Вывод

-1 0

-0.5 0

0 1

0.5 1.25

1 1

1.5 3.25

2 5

№10

Вывести на экран числа в виде следующей таблицы

· #include "stdafx.h"

· #include <iostream>

· using namespace std;

· int main()

· {

· int i, j;

· for (i = 1; i <= 5; ++i)

· {

· for (j = 1; j <= i; j += 1)

· cout << i + 1 - j << "\t";

· cout << endl;

· }

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Создаём цикл в цикле где I отвечает за столбец, j за строку. C помощью формулы i + 1 – j получаем данную таблицу:

№11

Написать программу, вычисляющую первые п элементов заданной последовательности: (стр 52, 12)

· #include <iostream>

· #include <cmath>

· using namespace std;

· int main()

· {

· float b1 = 0.5, b2 = 0.2, b; // задали первый и второй эл-нт последовательности

· int n;

· cout << "n=";

· cin >> n; //ввели кол-во эл-тов последовательности

· for (int i = 3; i <= n; i++)

· {

· b = (pow(b2, 2) + (b1 / 2));//вычисляем i

· b1 = b2;

· b2 = b; //делаем перестановку на шаг вперёд.

· cout << "b" << i << "=" << b << endl;

· }

· return 0;

· }

Подключаем стандартные библиотеки . Консольный ввод вывод. Программа с единственной функцией. Задаём первый и второй элемент как в условии. Вводим количество элементов. Вычисляем число (i). И делаем шаг вперёд дабы освободить переменную.

Ввод

n=5

Вывод

b3= 0.29

b4=0.1841

b5=0.178893

№ 12

Вычислить бесконечную сумму ряда с заданной точностью е (е>0). (стр 60 III)

· #include <iostream>

· #include <cmath>

· using namespace std;

· int main()

· {

· float e, s = 0; int i = 3;

· cout << " e ="; cin >> e;

· while (fabs(pow(-1, 2 * i - 1) / (i*(i - 1)*(i - 2)) >= e));

· {

· s = +pow(-1, 2 * i - 1) / (i*(i - 1)*(i - 2));

· i++;

· cout << "s=" << s;

· }

· return 0;

· }

Ввод : е= 0.1

Вывод: 1.6667

№13

Подсчитать сумму квадратов четных элементов.

· #include "stdafx.h"

· #include <iostream>

· using namespace std;

· int main()

· {int a[5];

· int n, i; int sum = 0;

· cout << "n="; cin >> n;

· for (int i = 0; i < n; i++)

· {cout << "a[" << i << "]="; cin >> a[i];

· if (a[i]%2==0)

· sum = (a[i] * a[i]) + sum;

· }

· cout << sum;

· return 0;

· }

Консольный ввод вывод. Подключаем стандартные библиотеки.Создаём одномерный массив. Заполняем его элементами. С помощью if (a[i]%2==0) сверяем его - является ли оно чётным число. Если Это так то прибавляем к сумме.

Ввод

n=5

Вывод 20

№14

Подсчитать сумму элементов, расположенных между первым максимальным и последним минимальным элементами. Если максимальный элемент встречается позже минимального, то выдать сообщение об этом.

· #include <iostream>

· using namespace std;

· int main()

· {

· int max, min, sum, k1, k2, i;

· sum = 0; k1 = 0; k2 = 0;

· int a[100];

· int n; cout << "n="; cin >> n;

· cout << "a[" << 0 << "]="; cin >> a[0];

· min = a[0]; max = a[0];

· for (int i = 1; i < n; i++)

· {

· cout << "a[" << i << "]="; cin >> a[i];

· if (a[i] > max)

· {

· max = a[i]; k1 = i;

· }

· if (a[i] < min)

· {

· min = a[i]; k2 = i; }

· }

· if (k2 >= k1)

· cout << "OSHIBKA";

· else

· for (int i = k2+1; i < k1; i++)

· {sum += a[i];}

· cout << sum << endl;

· return 0;}

Консольный ввод вывод. Подключаем стандартные библиотеки. Создаём одномерный массив. Заполняем его одновременно ведутся поиски максимального и минимального элемента. В итоге суммируем элементы от максимального до минимального.

№ Теста Ввод Вывод
n=5 1 2 3 4 5
n= 2 3 4 5 1 OSHIBKA
n= 1233445566980

№15

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения.

· #include "stdafx.h"

· #include <iostream>

· using namespace std;

· int main()

· {

· int n;

· cout << "n="; cin >> n;

· int *a = new int[n];

· cin >> a[0];

· for (int i = 1; i<n; i++)

· {

· cin >> a[i];

· for (int j = i - 1; j >= 0; j--)

· if (a[i] == a[j]) { i--; n--; break; }

· }

· for (int i = 0; i<n; i++)

· cout << "a[" << i << "]=" << a[i];

· return 0;

· }

Консольный ввод вывод. Подключаем стандартные библиотеки. Создаём одномерный массив. Заполняем его попутно сравнивая с предыдущим элементом. Если наш элемент равен предыдущему то делаем откат и перезаписываем в ячейку с повторяющимся элементом новый элемент.

№ Теста Ввод Вывод
N=5 1 2 3 3 4
N=5 1 1 2 2 3
N=5

№16

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения.

· #include <iostream>

· using namespace std;

· int main()

· {

· int ** a = new int *[3];

· for (int i = 0; i < 3; i++)

· {

· a[i] = new int [3];

· for (int j = 0; j < 3; j++)

· cin >> a[i][j];

· }

· int s= 0;

· for (int i = 0; i < 3; i++)

· for (int j = 0; j < 3; j++)

· if (a[i][j] % 2 == 0)

· s = s + (a[i][j] * a[i][j]);

· cout << s;

· return 0;

· }

Консольный ввод вывод. Подключаем стандартные библиотеки. Программа с единственной функцией. Создаём динамический двумерный массив размерностью 3 на 3. Начинаем ввод данных. Проверяем каждый символ не является ли он двузначным. Если да – возводим в квадрат и суммируем.Ввод: 123456789

Вывод:120

№17

Подсчитать норму матрицы по формуле |A| = Sum max a[i][j].

· #include <iostream>

· using namespace std;

· int main(){

· int n, m;

· cout << "Vvedite chislo strok =";

· cin >> n;

· cout << "Vvedite chislo stolbcov =";

· cin>> m;

· int **a = new int *[m];

· for (int i = 0; i < m; i++)

· a[i] = new int[n];

· for (int i = 0; i < n; i++)

· for (int j = 0; j < n; j++){

· cout << " Vvedite elementbI =";

· cin >> a[i][j];}

· int summ = 0;

· for (int i = 0; i < m; i++) {

· int max = a[i][0];

· for (int j = 1; j < m; j++) {

· if (a[i][j] > max)

· max = a[i][j];

· summ = summ + max; } }

· cout << summ;

· return 0;}

· консольный ввод вывод. подключаем стандартные библиотеки. создаём двумерный массив. запускаем цикл по поиску максимального элемента в строке. суммируем их и выводим.

№ Теста Ввод Вывод
Ввод n= 2 m = 2; 2 10 12 4 10 5
Ввод n= 3 m = 2; 2 10 12 4 10 5 18 5 0
Ввод n= 3 m = 1; 2 4 2

№18

Удалить все строки, в которых среднее арифметическое элементов является двузначным числом.

· #include <fstream>

· #include <iostream>

· #include <string>

· #include <stdio.h>

· #include <cmath>

· using namespace std;

· int main()

· {

· int n, m,k, i = 0;

· cout << "vvedite kol-vo strok = ";

· cin >> n;

· cout << "vvedite kol-vo stolbcov = ";

· cin >> m;

· int ** a = new int *[n];

· double *sr = new double[n];

· for (int i = 0; i < n; i++)

· {

· a[i] = new int[m];

· int sum=0;

· for (int j = 0; j < m; j++)

· {

· cout << "Vvedite element =";

· cin >> a[i][j];

· sum += a[i][j];

· }

· sr[i] = (double)sum / m;

·

· }

· for (int i = 0; i < n; i++)

· if ((fabs(sr[i]) >= 10) && (fabs(sr[i]) < 100))

· {

· k = i;

· for (int i = k; i < n - 1; ++i) a[i] = a[i + 1];

· a[n - 1] = 0;

· --n;

· }

· for (int i = 0; i < n; i++, cout << endl)

· for (int j = 0; j < m; j++)cout << a[i][j] << "\t";

· if (n > 0)

· for (int i = 0; i < n; i++)

· for (int j = 0; j < m; j++)

· cout << "a[" << i << "][" << j << "]=" << a[i][j];

· else

· cout << "Massiv polnost'y ydalen...";

· for (int i = 0; i < n; ++i) delete [] a[i];

· delete [] a;

· delete[] sr;

· return 0;

· }

№ Теста Ввод Вывод
Ввод n = 1 ; m = 1 элементы 40 Вывод Massiv polnost'y ydalen...
Ввод n = 3 ; m = 3 элементы 4 2 1 2 2 1 1 2 3 Вывод 4 2 1 2 2 1 1 2 3
Ввод n = 3 ; m = 3 элементы 40 20 10 2 2 1 1 2 3 Вывод 2 2 1 1 2 3

Консольный ввод вывод. Подключаем стандартные библиотеки. Создаём двумерный массив. Ищем среднее арифметическое каждой строки. Если оно двузначное то удаляем строку.

№ 19

Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку, содержащую первые N1 символов строки S1 и последние N2 символов строки S2 (в указанном порядке).

· #include <iostream>

· #include <string>

· using namespace std;

· int main()

· {

· string::size_type N1, N2, j;

· string S1, S2, S = "";

· cout << "vvedite celoe chislo N1";

· cin >> N1;

· cout << "vvedite celoe chislo N2";

· cin >> N2;

· cout << "vvedite stroky 1" << endl;

· cin >> S1;

· cout << S1 << endl;

· cout << "vvedite stroky 2" << endl;

· cin >> S2;

· cout << S2 << endl;

· string::size_type len = S2.length();

· S = S1.substr(0, N1) + S2.substr(len - N2, N2);

· cout << S;

· return 0;

· }

консольный ввод вывод. подключаем стандартные библиотеки. вводим число символов N1 и N2. Вводим первую строку и вторую. С помощью S1.substr(1, N1) берём N1 первых символов строки S1 и аналогично S2.substr(len - N2, N2) N2 символов строки S2. Выводим всё в общую строку.

№ Теста Ввод Вывод
· N1 - 2; N2 - 3; S1 -qwert; S2 - rtyui qwyui
· N1 - 0; N2 - 4; S1 -qwerty; S2 - asdfgh dfgh

№20

Дан текстовый файл. Напечатать все строки, длина которых меньше заданного числа.

· #include <fstream>

· #include <iostream>

· #include <string>

· using namespace std;

· int main (){

· ifstream in("text.txt"); ofstream out("t.txt");

· int g,k;

· string s;

· cout << "Vvedite chislo = "; cin >> g;

· while (in.peek()!=EOF)

· { getline(in,s);

· k=s.length();

· g= g+1;

· if (k==g)

· out << s << endl;}

· in.close (); out.close ();

· return 0;}

файловый ввод вывод. подключаем стандартные библиотеки. Подключаем используемый файл. "text.txt" и файл в который будем записывать результат работы "t.txt". вводим число которое будет константой для всех строк. сверяем кол-во символов в каждой строке файла "text.txt" с заданым числом (g). Если строка меньше числа то выводим эту строку в файл "t.txt".

пример:

"text.txt"

1. Сколько на Земле материков начинаются на букву «А»?

2. Сколько суток составляют високосный год?

3. Сколько музыкантов в квинтете?

4. Сколько полей-квадратиков на шахматной доске?

5. Сколько холодных цветов в радуге?

6. Сколько сантиметров составляет одна тысячная часть километра?

7. Сколько глаз у обыкновенной мухи?

8. Сколько суток курица высиживает цыплят?

9. Сколько звуков в слове «рассеянный»?

10. Сколько можно дать ответов на вопрос «Мы пойдем сегодня в парк?»...

№ Теста Ввод Вывод ( в файл t.txt)
g= 43 2. Сколько суток составляют високосный год?
g = 54 1. Сколько на Земле материков начинаются на букву «А»?
g= 0 ( пустой файл )

Наши рекомендации