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

  • Автор темы Dual
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

Dual

Гость
#1
Здраствуйте все. Надеюсь на вашу помощь. Нужно решить пару задач.
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 заменяется на а.
Очень надеюсь на вашу помощь
 

DarkKnight

Well-Known Member
01.08.2010
653
0
33
Владивосток
#3
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;

}
 

Вложения

DarkKnight

Well-Known Member
01.08.2010
653
0
33
Владивосток
#4
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;

}
 

Вложения

Статус
Закрыто для дальнейших ответов.