ВОПРОС · Q&A

Задачи: Несколько логических задачек

3 ответов 6,7 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор вопроса
Здраствуйте все. Надеюсь на вашу помощь. Нужно решить пару задач.
1. Двузначное число втрое больше суммы своих чисел, а квадрат этой суммы равен утроенному начальному числу. Найти это число.
2. Население города каждый год увеличивается на 1(дробь)40 от существующего. Через сколько лет население утроится.
3. Найти наибольшую и наименьшую цифры в записи данного натурального числа.
4. Написать программу для нахождения суммы большего и меньшего из трех чисел. Поиск минимума и максимума оформить в виде функции.
5. В массиве действительных чисел а1,а2,...,аN, есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов P1, и произведение положительных элементов P2. Сравнить модуль P2 с модулем Р1, указать, какое из произведений по модулю больше.
6. Массив имеет размер 30 элементов. Все элементы формируются с помощью генератора случайных чисел и лежат в интервале от 1 до 99. Отсортировать массив по убыванию.
7. Дан текст в виде математической записи. Заменить "+" на "-", "-" на "*", "*" на "+".
8. Составить программу, которая вводит строку с клавиатуры; признак окончания ввода - нажатие клавиши Enter, шифрует введенный текст в файл на диске по определенному алгоритму. программа может считать эту строку из файла и далее дешифрует текст, выводит его на экран и записывает его опять в выходной файл.
Меню программы:
Сформировать с клавиатуры строку текста и записать в файл shifr.txt
Считать строку и распечатать
Зашифровать
Расшифровать.
Алгоритмы шифровки:
Каждая бука от а до z заменяется на следующую по алфавиту,а z заменяется на а.
Очень надеюсь на вашу помощь
 
Перемещенно из темы с мусором
 
1. Двузначное число втрое больше суммы своих чисел, а квадрат этой суммы равен утроенному начальному числу. Найти это число.
2. Население города каждый год увеличивается на 1(дробь)40 от существующего. Через сколько лет население утроится.
3. Найти наибольшую и наименьшую цифры в записи данного натурального числа.

C++:
/*
1. Двузначное число втрое больше суммы своих чисел, а квадрат этой суммы равен утроенному начальному числу. Найти это число.
2. Население города каждый год увеличивается на 1(дробь)40 от существующего. Через сколько лет население утроится.
3. Найти наибольшую и наименьшую цифры в записи данного натурального числа.
*/
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>

using namespace std;

void main(void)
{
setlocale(LC_ALL,"Russian");

//1. Двузначное число втрое больше суммы своих чисел, а квадрат этой суммы равен утроенному начальному числу. Найти это число.
cout<< "1. Двузначное число втрое больше суммы своих чисел, а квадрат этой суммы равен утроенному начальному числу. Найти это число." << endl;
int dvCh = 0; //Наше число
for (int i = 10; i<100; i++) //Обойдем все двухзначние числа [10..99];
{
int Sum = i%10 + i/10; //Это сумма числе двухзначного числа (остаток от деление на 10 + число полученное целоч. делением на 10
if ((i == 3*Sum) && (Sum*Sum == 3*i)) // Это наши условие ЧИСЛО = 3*SUM AND SUM^2 == 3*ЧИСЛО
{
//Как только условие соответствует то выведим его и выдим из цикла
cout<< "Данное число = " << i << endl << endl;
break;
}
}

//2. Население города каждый год увеличивается на 1(дробь)40 от существующего. Через сколько лет население утроится.
cout<< "2. Население города каждый год увеличивается на 1(дробь)40 от существующего. Через сколько лет население утроится." << endl;
double dAll = 0.0; //Текущее приращение
double AllNass = 1.0; //Население текущее
int YearCnt = 0; //Счетчик лет
while (AllNass < 3) //Пока Население будет < 3 (в три раза больше первонач)
{
dAll = AllNass/ 40.0; //Найдем приращение
AllNass+=dAll; //Новое значение населения
YearCnt++; //Увеличим счетчик года
}
cout<< "Утроится через " << YearCnt << "лет" << endl << endl;

//3. Найти наибольшую и наименьшую цифры в записи данного натурального числа.
cout<< "3. Найти наибольшую и наименьшую цифры в записи данного натурального числа." << endl;	
int Natur; //Наше вводимое натуральное число
int cfMin = 10; //Минимальная цифра
int cfMax = -1; //Максимальная цифра
cout << "Введите натуральное число : ";
cin >> Natur;
while (Natur > 0)
{
int cif = Natur % 10; //Текущая цифра полученная при остатке от деления на 10
if (cif > cfMax)
cfMax = cif;
if (cif < cfMin)
cfMin = cif;

Natur /= 10; //Разделем целочисленным делением на 10 введенную цифру
}
cout << "Минимальная цифра в натуальном числе = " << cfMin << endl;
cout << "Максимальная цифра в натуальном числе = " << cfMax << endl;

}
 

Вложения

  • logicz.jpg
    logicz.jpg
    37,5 КБ · Просмотры: 325
4. Написать программу для нахождения суммы большего и меньшего из трех чисел. Поиск минимума и максимума оформить в виде функции.
5. В массиве действительных чисел а1,а2,...,аN, есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов P1, и произведение положительных элементов P2. Сравнить модуль P2 с модулем Р1, указать, какое из произведений по модулю больше.
6. Массив имеет размер 30 элементов. Все элементы формируются с помощью генератора случайных чисел и лежат в интервале от 1 до 99. Отсортировать массив по убыванию.
7. Дан текст в виде математической записи. Заменить "+" на "-", "-" на "*", "*" на "+".
C++:
/*
4. Написать программу для нахождения суммы большего и меньшего из трех чисел. Поиск минимума и максимума оформить в виде функции.
5. В массиве действительных чисел а1,а2,...,аN, есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов P1, и произведение положительных элементов P2. Сравнить модуль P2 с модулем Р1, указать, какое из произведений по модулю больше.
6. Массив имеет размер 30 элементов. Все элементы формируются с помощью генератора случайных чисел и лежат в интервале от 1 до 99. Отсортировать массив по убыванию. 
7. Дан текст в виде математической записи. Заменить "+" на "-", "-" на "*", "*" на "+".
*/
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>
#include <time.h>

using namespace std;

//Функция нахождения мин. значения (задача 4)
double MinF(double a, double b, double c)
{
double Result = a;
if (Result > b)
Result = b;
if (Result > c)
Result = c;
return Result;
}
//Функция нахождения Макс. значения (задача 4)
double MaxF(double a, double b, double c)
{
double Result = a;
if (Result < b)
Result = b;
if (Result < c)
Result = c;
return Result;
}

//Основная функция
void main(void)
{
setlocale(LC_ALL,"Russian");

//4. Написать программу для нахождения суммы большего и меньшего из трех чисел. Поиск минимума и максимума оформить в виде функции.
cout<< "4. Написать программу для нахождения суммы большего и меньшего из трех чисел. Поиск минимума и максимума оформить в виде функции." << endl;
//Тут конечно лучше массивами оформлять, и функция бы была красивее, но из задания явно видно про 3 переменные...
double a, b, c;
cout << "Введите первое число a = ";
cin >> a;
cout << "Введите второе число b = ";
cin >> b;
cout << "Введите третье число c = ";
cin >> c;
cout << "Результат : " << MaxF(a,b,c) + MinF(a,b,c) << endl;
cout << endl << endl;
/*
-------------------------------------------------------------------------------------------------
*/

//5. В массиве действительных чисел а1,а2,...,аN, есть только положительные и отрицательные элементы.
//Вычислить произведение отрицательных элементов P1, и произведение положительных элементов P2. 
//Сравнить модуль P2 с модулем Р1, указать, какое из произведений по модулю больше.
cout<< "5. В массиве действительных чисел а1,а2,...,аN, есть только положительные и отрицательные элементы." << endl;
cout<< "Вычислить произведение отрицательных элементов P1, и произведение положительных элементов P2." << endl;
cout<< "Написать программу для нахождения суммы большего и меньшего из трех чисел. Поиск минимума и максимума оформить в виде функции." << endl;
int *Arr; //Наш массив действительных чисел
int ArrSize; //Размер массива
long P1 = 1; //Произведение отрицательных элементов
long P2 = 1; //Произведение положит. элементов
srand(time(NULL)); //Инициализация генератора случ. величины
cout << "Введите кол-во чисел ArrSize = ";
cin >> ArrSize; //Введем кол-во элементов массива

Arr = new int[ArrSize]; //Динамически выделим память под элементы
//Заполним массив только полож. и только отрицательными случ. величинами
for (int i = 0; i < ArrSize; i++)
{
Arr[i] = (rand()%99+1) * (rand()%2?1:-1); //Сгенерируем значение от 1..99 и домножим его или на -1 или на 1
cout << Arr[i] << " "; //Выведим на экран массив
//Сразу будем находить произведение
if (Arr[i] < 0)
P1 *= Arr[i]; //Если отриц. элемент
else P2 *= Arr[i]; //Если положительный
}
cout << endl;
cout << "Произведение отриц. элементов P1 = " << P1 << endl;
cout << "Произведение полож. элементов P2 = " << P2 << endl;
//Проанализируем модули
if (abs(P1) > abs(P2)) //Если |P1| > |P2|
cout << "|P1| > |P2|";
else if (abs(P1) < abs(P2)) // Иначе если |P1| < |P2|
cout << "|P1| < |P2|";
else cout << "|P1| = |P2|"; //Иначе (тоесть они равны)
cout << endl << endl;
/*
-------------------------------------------------------------------------------------------------
*/

//6. Массив имеет размер 30 элементов. 
//Все элементы формируются с помощью генератора случайных чисел и лежат в интервале от 1 до 99. Отсортировать массив по убыванию.
cout<<"6. Массив имеет размер 30 элементов. " << endl;
cout<<"Все элементы формируются с помощью генератора случайных чисел и лежат в интервале от 1 до 99. Отсортировать массив по убыванию." << endl;
int Massiv[30]; // Наш массив
//Заполним его случ. величинами от 1 до 99
cout<< "Сходный массив : " << endl;
for (int i =0; i< 30; i++)
{
Massiv[i] = rand()%99 +1; //Сгенерируем значение получается так [(0..98) + 1]
cout << Massiv[i] << " "; //
}
//Отсортируем по убыванию
cout << endl << "Отсортированные массив : "<< endl;
for (int i = 0; i< 30; i++)
{
for (int j = i+1; j<30; j++)
{
if (Massiv[i] < Massiv[j])
{
int Temp = Massiv[i];
Massiv[i] = Massiv[j];
Massiv[j] = Temp;
}
}
cout << Massiv[i] << " ";
}
cout<< endl << endl;
/*
-------------------------------------------------------------------------------------------------
*/
//7. Дан текст в виде математической записи. Заменить "+" на "-", "-" на "*", "*" на "+".
cout<< "7. Дан текст в виде математической записи. Заменить \"+\" на \"-\", \"-\" на \"*\", \"*\" на \"+\"." << endl;
char buffer[1024]; //Вводимая строка
cout << "Введите строку : ";
getchar();
cin.getline(buffer,1023);
//Обойдем всю строку циклом
for (int i = 0; i< strlen(buffer); i++)
{
//Оператором выбора поменяем все по усл. задачи
switch (buffer[i])
{
case '+':
buffer[i] = '-';
break;
case '-':
buffer[i] = '*';
break;
case '*':
buffer[i] = '+';
break;
default:
break;
//Ну по дефолту ничего не делаем
}
}
cout << "Результат : " << buffer << endl;

}
 

Вложения

  • logic_good.jpg
    logic_good.jpg
    74,4 КБ · Просмотры: 302
Статус
Закрыто для дальнейших ответов.