Ваше решение записывайте как комментарий к данной странице (пример оформления).
Операции ввода-вывода можно для данных задач не указывать. Результат присвойте переменной R. Все переменные — целые числа.
Решены задачи: 2,3 Не решены: 1,4,5
Задачи:
S3.1 Составить программу обмена значениями двух переменных величин.
S3.2. Cоставить программу обмена значениями трех переменных величин а, b, c по
следующим двум схемам: — есть решение.
а) b присвоить значение c, а присвоить значение b, с присвоить значение а;
б) b присвоить значение а, с присвоить значение b, а присвоить значение с.
S3.3. Дано вещественное число а. Пользуясь только операцией умножения, получить:
а) a4 за две операции;
б) a6 за три операции;
в) a7 за четыре операции;
г) a8 за три операции;
д) a9 за четыре операции;
е) a10 за четыре операции.
S3.4. Дано вещественное число a. Пользуясь только операцией умножения, получить:
а) a3 и a10 за четыре операции;
б) a4 и a20 за пять операций;
в) a5 и a13 за пять операций;
г) a5 и a19 за пять операций;
д) a2, a5 и a17 за шесть операций;
е) a4, a12 и a28 за шесть операций.
S3.5. Чему будет равно 1010 по Вашему алгоритму?
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
Вот так проще, без арифметики и вычислений.
int a, b, c;
c = a;
a = b;
b = c;
S3.3. Дано вещественное число а. Пользуясь только операцией умножения, получить:
using System;
public class Vladislav{
public static void Main(){
double a1, a2, a3, a4, a5, a6, f;
Console.Write(«Введите a: «);
double g = Convert.ToDouble(Console.ReadLine());
f = g*g;
a1 = f*f;
System.Console.WriteLine($»1) {a1}.»);
a2 = a1*g*g;
System.Console.WriteLine($»2) {a2}.»);
a3 = a1*g*g*g;
System.Console.WriteLine($»3) {a3}.»);
a4 = a2*g*g;
System.Console.WriteLine($»4) {a4}.»);
a5 = f*a1*f*g;
System.Console.WriteLine($»5) {a5}.»);
a6 = a1*a1*g*g;
System.Console.WriteLine($»6) {a6}.»);
}
}
Возможно, что-то все-таки не так понял
S3.1
int a=int.Parse(Console.ReadLine());
int b=int.Parse(Console.ReadLine());
int tmp=b;
a=b;
b=tmp;
//S3.5.Чему будет равно 1010 по Вашему алгоритму ?
double r, a = 10;
//10 000 000 000
r = a*a;//100
Console.WriteLine(r);
r *= r;//10000
Console.WriteLine(r);
r *= r;//100000000
Console.WriteLine(r);
r *= a*a;//10 000 000 000
Console.WriteLine(r);
Добрый день, возможно я не поняла условие задачи, если так, не могли бы вы объяснить. Спасибо!
//S3.4.Дано вещественное число a.Пользуясь только операцией умножения, получить:
double r, a = 2;
//а) a3 и a10 за четыре операции;
//2^3 = 8,2^10 = 1024
r = a * a;//4
r *= a;//8
r *= r * r;//512
r = r * a;//1024
Console.WriteLine(r);
//б) a4 и a20 за пять операций;
//2^4 = 16,2^20 = 1048576
r = a * a;//4
r *= a * a;//16
r *= r * a;//512
r *= r * a;//524288
r = r * a;//1048576
Console.WriteLine(r);
//в) a5 и a13 за пять операций;
//2^5 = 32,2^13 = 8192
r = a * a;//4
r *= r * a;//32
r *= r * a;//2048
r *= a;//4096
r *= a;//8192
Console.WriteLine(r);
//г) a5 и a19 за пять операций;
//2^5 = 32,2^19 = 524288
r = a * a;//4
r *= r * a;//32
r *= r * r;//32768
r *= a * a;//131072
r *= a * a;//524288
Console.WriteLine(r);
//д) a2, a5 и a17 за шесть операций;
//2^2 = 4,2^5 = 32,2^17 = 131072
r = a * a;//4
r *= r * a;//32
r *= r * a;//2048
r *= a * a;//8192
r *= a * a;//32768
r *= a * a;//131072
Console.WriteLine(r);
//е) a4 , a12 и a28 за шесть операций.
//2^4 = 16,2^12 = 4096,2^28 = 268435456
r = a * a;//4
r *= a * a;//16
r *= r * r;//4096
r *= a;//8192
r *= a;//16384
r *= r;//268435456
Console.WriteLine(r);
{
Console.WriteLine(«Введите значения a и b они поменяются местами»);
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
(a,b) = (b,a);
Console.WriteLine($»a = {a}, b = {b}»);
Console.ReadKey();
}
S3.1
static void Main(string[] args)
{
int a = 200;
int b = 450;
Exchange(ref a, ref b);
Console.WriteLine($»a = {a}, b = {b}»);
}
public static void Exchange(ref int a, ref int b) => (a, b) = (b, a);
S3.1
float a,b;
a = Convert.ToSingle(Console.ReadLine()); // -5
b = Convert.ToSingle(Console.ReadLine()); // 6
Console.WriteLine(«Было введено: a={0} b={1}»,a,b);
b = b + a; // 1
a = b — a; // 6
b = b — a; // -5
Console.WriteLine(«Обмен переменных: a={0} b={1}»,a,b);
int a = 5;
int b = 11;
int c = 99;
int d = a + b + c ;
b = d — b — a;
a = d — c — a;
c = d — a — b;
Console.WriteLine($»переменная а{a} \nпеременная b {b} \n переменная с {c}»);
int a = 5;
int b = 11;
int c = (a + b);
b = c — b;
a = c — a;
Console.WriteLine($»переменная а{a} \nпеременная b {b}»);
что значит обмен значениями?
3.2a
static void Main(string[] args)
{
int a = 45, b = 35, c = 66;
a = a + b + c;
c = a — c;
b = a + b;
a = b — a;
c = a + c;
b = b — c;
c = c — a;
c = c — a;
Console.WriteLine($»a = {a} b = {b} c = {c}»);
}
Владимир, первая часть — верно. Во второй — напутали немного.
Владимир, все верно. А знаете как это сделать через промежуточную переменную?
П.С. Лучше не использовать нижнее подчеркивание в именах переменных. Используйте лучше camelCase.
// VS подчеркивает b — ненужное присваивание значения b
уходит ошибка если поменять местами b = c; с a = b;
Serj, не совсем верно. VS подчеркивает и указывает вам на ошибки в алгоритме. А конкретно: значения a и b будут одинаковыми, а вам нужно сделать циклический обмен значениями.
Console.WriteLine(«#1»);
double a, b, c;
Console.Write(«Введите а: «);
a = Convert.ToDouble(Console.ReadLine());
Console.Write(«Введите b: «);
b = Convert.ToDouble(Console.ReadLine());
c = a;
a = b;
b = c;
Console.WriteLine($»a={a}, b={b}»);
Console.WriteLine(«#2a»);
double a, b, c, d;
Console.Write(«Введите а: «);
a = Convert.ToDouble(Console.ReadLine());
Console.Write(«Введите b: «);
b = Convert.ToDouble(Console.ReadLine());
Console.Write(«Введите c: «);
c = Convert.ToDouble(Console.ReadLine());
d = b;
b = c;
c = a;
a = d;
Console.WriteLine($»a={a}, b={b}, c={c}»);
Console.WriteLine(«#2b»);
double a, b, c, d;
Console.Write(«Введите а: «);
a = Convert.ToDouble(Console.ReadLine());
Console.Write(«Введите b: «);
b = Convert.ToDouble(Console.ReadLine());
Console.Write(«Введите c: «);
c = Convert.ToDouble(Console.ReadLine());
d = b;
b = a;
a = c;
c = d;
Console.WriteLine($»a={a}, b={b}, c={c}»);
Console.WriteLine(«#3»);
int a, A, b, B, c, C, d, D;
Console.Write(«Введите а: «);
a = Convert.ToInt32(Console.ReadLine());
A = a * a;
A = A * A;
Console.WriteLine(«а в 4 степени = » + A);
A = a * a;
b = A * A;
B = b * A;
Console.WriteLine(«а в 6 степени = » + B);
A = a * a;
b = A * A;
B = b * A;
c = B * a;
Console.WriteLine(«а в 7 степени = » + c);
A = a * a;
b = A * A;
B = b * b;
Console.WriteLine(«а в 8 степени = » + B);
A = a * a;
b = A * A;
B = b * b;
c = B * a;
Console.WriteLine(«а в 9 степени = » + c);
A = a * a;
b = A * A;
B = b * b;
c = B * A;
Console.WriteLine(«а в 10 степени = » + c);
Console.WriteLine(«#4»);
int a, A, b, B, c, C, d, D;
Console.Write(«Введите а: «);
a = Convert.ToInt32(Console.ReadLine());
A = a * a;
b = A * a;
B = A * b;
c = B * B;
Console.WriteLine($»а в 3 степени = {b}, а в 10 степени = {c} «);
A = a * a;
b = A * A;
B = b * a;
c = B * B;
C = c * c;
Console.WriteLine($»а в 4 степени = {b}, а в 20 степени = {C} «);
A = a * a;
b = A * A;
B = b * a;
c = b * b;
C = c * B;
Console.WriteLine($»а в 5 степени = {B}, а в 13 степени = {C} «);
A = a * a;
b = A * A;
B = b * A;
c = B * B;
C = c * B;
d = C * b;
Console.WriteLine($»а в 5 степени = {B}, а в 19 степени = {C} «); //не знаю как за пять
A = a * a;
b = A * A;
B = b * A;
c = B * B;
C = c * B;
d = C * A;
Console.WriteLine($»а в 2 степени = {A}, а в 5 степени = {B}, а в 17 степени = {d} «);
A = a * a;
b = A * A;
B = b * b;
c = B * b;
C = c * c;
d = C * b;
Console.WriteLine($»а в 4 степени = {b}, а в 12 степени = {c}, а в 28 степени = {d} «);
Console.WriteLine(«#5»);
int a = 10, A, b, B, c;
A = a * a;
b = A * A;
B = b * b;
c = B * A;
Console.WriteLine(«10 в 10 степени = » + c);
S3.5/ Умножение не интересно и не эффективно:
В этой задаче вопрос про возведение целого числа 10 в 10 степень путем перемножения:
Ответ: 1410065408 из-за переполнения в последней операции.
Хотелось обратить внимание!
Да. Можно и так, со скобками.
Можно и аналогично перестановке в S3,1
S3.2 б)
S3.1
int a;
int b;
a = b — a + (b = a);
S3.4. Дано вещественное число a. Пользуясь только операцией умножения, получить:
а) a3 и a10 за четыре операции:
Дмитрий! так можно.
Правда, в условии задачи требуется использовать только умножение.
S 3.4
Эд! Верно заметили, спасибо!
Задачу a^19 за 5 операций будем считать не корректной!
А можно эту задачу решить для сокращения кода, использованием буфера?
Serj, лучше использовать переменные как в условии. Это важно для этой задачи.
S3.1. Составить программу обмена значениями двух переменных величин.
Один из вариантов решения (без участия третьей переменной):
Анна, зачет!
Думаю однако, что экономия 4 байт памяти сейчас не актуальна. А три пересылки выполнятся намного быстрее, чем три сложения/вычитания.
А это не верно?
Влад! Верно, это и есть стандартный алгоритм перестановки двух элементов через третий (три пересылкм).
Изучаю C# 3 день, вот что у меня получилось.
S3.3. Дано вещественное число а. Пользуясь только операцией умножения, получить a^n:
Павел, в целом для начала неплохо. Вы написали код для любого целого числа degree. Более коротко то же самое можно сделать в одном цикле, не объявляя массив:
Но то, что предложил Богдан (см. чуть выше), более точно соответствует заданию.
У него a^8 вычисляется за три операции умножения, у Вас за 8, и т.д.
S3.3. Дано вещественное число а. Пользуясь только операцией умножения, получить:
Богдан, в целом идеи верные. Чуть исправил, a — вход, r — выход.
Класс! \ (•◡•) /
Если создавать переменные, а не перезаписывать их, является ли такой код валидным, для того, кто еще не проходил даже операции инкремента?
Да. А в чем сомнения?
Спасибо за ответ. Просто обратил внимание в комментариях большинство перезаписывают переменные. Только начинаю свой путь, и хотел бы с нуля уже привыкать к читабельному коду.
S3.2. Составить программу обмена значениями трех переменных величин а, b, c по следующим двум схемам: — есть решение.
а) b присвоить значение c, а присвоить значение b, с присвоить значение а;
б) b присвоить значение а, с присвоить значение b, а присвоить значение с.
Сергей!
Задача а) решена полностью. А посмотрите решение Дмитрия перед Вашим: та же самая перестановка (это суть алгоритма — четыре оператора).
S3.2 Составить программу обмена значениями трех переменных величин а, b, c по следующим двум схемам:
а) b присвоить значение c, а присвоить значение b, с присвоить значение а;
S3.2 Составить программу обмена значениями трех переменных величин а, b, c по следующим двум схемам: — есть решение.
б) b присвоить значение а, с присвоить значение b, а присвоить значение с.
Все верно, Дмитрий. Кольцевые перестановки в двух направлениях. А теперь сделайте для массива!
S3.3. Дано вещественное число а. Пользуясь только операцией умножения, получить:
а) a4 за две операции;