Разбор одного из вариантов по Информатике | — Терногон / Ternogon
Терногон / Ternogon

Задания прорешены студентом: Российского Технологического Универститета
Московского Института Радиоэлектроники и Автоматики

Группа: ББСО-03-18

Первое задание

Написать программу, которая выводит таблицу значений функции y = -35х^3 + 6х^2 — 3 в диапазоне от -5 до 2 с шагом 0,5.

#include <stdio.h>
#include <math.h>
int main(void)
{
float z = -5;
float y;
for (float x = -5; x<=2; x += 0.5){
y = (((-35) * pow(x, 3)) + (6 * pow(x, 2)) - 3);
printf("X = %.1f, Y = %.3f\n", x, y);
}
return 0;
}

Второе задание

Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом (количество символов в строке не более 6).

#include <stdio.h>
#include <string.h>
int main()
{
char str[6] = {'\n'};
int k;
int i;
scanf("%s", str);
strupr(str);
k = strlen(str);
while ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'F')){
i++;
};
if (k == i){
printf("HEX CODE\n");
}
else {
printf("NOT HEX CODE\n");
}
return 0;
}

Третье задание

Задан числовой массив А[1:m, 1:n].
Составить программу поиска количества отрицательных и положительных элементов массива расположенных над главной диагональю и обнуления тех, количество которых минимально.

#include <stdio.h>
int main()
{
int nc = 0;
int pc = 0;
const int n = 5;
const int m = 5;
int A[5][5] = {1, -2, 3, -4, 5, 6, 7, -8, -9, 1, 2, -3, 4, 5, -6, 7, 8, 9, -4, -4, 7, 8, 9, 10, 7};
int i = 0, j = 0;
for (i = 0; i < n; i++)	{					//СТОЛБЦЫ МАССИВА
for (j = 0; j < m; j++)	{				//СТРОКИ МАССИВА
printf("%d	", A[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < n; i++)	{						//Подсчет элементов:
for (j = i + 1; j < m; j++) {
if (A[i][j] > 0) 		pc++;			//ПОЛОЖИТЕЛЬНЫХ
else if (A[i][j] < 0) 	nc++;			//ОТРИЦАТЕЛЬНЫХ
}
}
if (pc > nc) { 									//Обнуление необходимых элементов
for (i = 0; i < n; i++) {
for (j = i + 1; j < m; j++) {
if (A[i][j] < 0) 
A[i][j] = 0;											
}
}
} 
else if (pc < nc) {
for (i = 0; i < n; i++) {
for (j = i + 1; j < m; j++) {
if (A[i][j] > 0) 
A[i][j] = 0;
}
}
}
for (i = 0; i < n; i++) {  					//ВЫВОД ОТВЕТА
for (j = 0; j < m; j++) {
printf("%d	", A[i][j]);
}
printf("\n");
}
return 0;
}

Четвертое задание

Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по четным строкам.
(Максимальная размерность массива 15х15).

Pastebin
#include <iostream>
using namespace std;
int main(){
RE:
int sum = 0;
int rzX, rzY = 0;
system("chcp 1251 > nul");
cout << "Введите размерность массива, не превышающую 15x15: \n";
cout << "Введите количество строк: ";
cin >> rzX;																//Вводим количество строк
cout << "Введите количество столбцов: ";
cin >> rzY;																//Вводим количество столбцов
if ((rzX > 15 or rzY > 15) or (rzX == 0 or rzY == 0)) {					//Проверка размерности
cout << "Ошибка, указанная размерность не допустима.\n";
system("pause");
goto RE;
} 
else {
int mas[rzX][rzY];													//Создание массива указаной размерности
for (int i = 1; i <= rzX; i++) {
for (int j = 1; j <= rzY; j++) {							//Отсчет идет от 1, так как мы указали количество строк не считая 0.
cin >> mas[i][j];											//Ввод массива по строкам с клавиатуры
if (i % 2 == 0) {											//Проверка на четность
sum += mas[i][j];
}
}
} 	
cout << "Полученная сумма элементов четных строк: " << sum << endl;		//Ввывод результата
system("pause");
goto RE;
}
}

Пятое задание

Написать функцию, которая возвращает значение True, если символ, полученный функцией в качестве аргумента, не является буквой английского алфавита.

Pastebin
#include <iostream>
using namespace std;
bool lat(char symbol){
cout << "S = " << symbol << endl;
if ((symbol >= 65 and symbol <= 90) or (symbol >= 97 and symbol <= 122)) {
return false;
}
else 
return true;
}
int main(){
char C;
cin >> C;
if (lat(C) == 1) {
cout << "True";
}
else
cout << "False";
return 0;
}

Шестое задание

Определить попадание произвольной точки в заштрихованную область.

 

Pastebin (с описанием) Pastebin (без описания)
#include <iostream>
using namespace std;
int main(){
R: 
float x, y = 0;
bool xp = 1, yp = 1;		//Переменные показывающие положительное ли число X или Y
system("chcp 1251>nul");
cout << "Введите X и Y:" << endl;
cout << "	";
cin >> x >> y;
if (x < 0){				//Если X < 0, то инвертируем его в +
xp = 0;
x  *= -1;
}
if (y < 0){				//Если Y < 0, то инвертируем его в +
yp = 0;
y *= -1;
}
if ((y > 1.5) || (x > 2)){			//Если Y > 1.5, то такого не может быть
cout << "Не попал." << endl;
cout << "Введенное значение вышло за рамки заданного рисунка.\n" << endl;
goto R;
}
if (x <= 1 && y <= 1){				//Если X <= 1 И Y <= 1 (они уже будут инвертированы в положительные значения), то мы рассматриваем квадрат (1,1)
if ((xp && yp) || (!xp && !yp)){		//Если X и Y одинаковы по знаку, то мы попали в левую часть квадрата (1,1)
if (y >= x) cout << "Попал.\n" << endl;				//Если Y >= X, то да, попадает в область
else cout << "Не попал.\n" << endl;
}
else{											//Если же мы попали в правую часть квадрата, то переворачиваем условие
if (y <= x) cout << "Попал.\n" << endl;			//Если Y <= X, то да, попадает в область
else cout << "Не попал.\n" << endl;
}
}
else if (((xp && !yp) || (!xp && yp)) && (y - 1) >= (x - 1)*0.5)	//Проверка на углы, после этого возвращаем значения к окресности 0, а X умножаем на угловой коэффицент из уравнения прямой в углу y=0.5x-0
cout << "Попал.\n" << endl;	
else
cout << "Не попал.\n" << endl;
goto R;
return 0;
}

Второй вариант:

Pastebin (без описания)
#include <iostream>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
RE:
float x = 0, y = 0;
cout << "Введите X и Y: ";
cin >> x >> y;
if((((x >= 0) and (x <= 1)) and (( y <= 0) and ((y >= ( x*(-1))))) or 
(((x >= 0)and (x <= 1)) and ((y >= 0) and (y >= x))) or 
(((x <= 0)and (x >= -1)) and ((y <= 0) and (y <= x))) or 
(((x <= 0) and (x >= -1)) and ((y >= 0) and (y <= (x*(-1))))) or 
(((x <= 0) and (x >= -1)) and ((y >= 1) and (y <= 1.5))) or 
(((x >= 0) and (x <= 1)) and ((y >= -1.5) and (y <= -1))) or 
(((x <= -1) and (x >= -2)) and ((y <= 1.5) and (y >= (-x/2)+0.5))) or 
((x >= 1) and (x <= 2) ) and ((y >= -1.5) and (y <= (-x/2)-0.5)))) 
cout << "Попал." << endl;
else cout << "Не попал." << endl;
cout << endl;
goto RE;
return 0;
}

 

Следующая Запись