Разбор одного из вариантов по Информатике | — Терногон / 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;
}

 

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