Механико-математический факультет
САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.Г. ЧЕРНЫШЕВСКОГО.
МЕХАНИКО-МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ
ОТЧЁТ
По дисциплине<<Основы информатики>>
Выполнил студент 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 | ( пустой файл ) |