Добрый день, уважаемые пользователи.
Как всем, наверное, известно, компьютеры изначально придумывались, чтобы производить на них вычисления. И это было их основное назначение. Именно этим мы сегодня и займемся, в сегодняшнем уроке программирования для начинающих. Т.е. затронем такую важную тему как арифметические выражения и операторы в языке программирования Си. Поговорим об операторе присваивания, приоритете операций, операциях инкремента и декремента. Итак, приступим.
Прочитайте улучшенную версию этого урока "Математика в Си".
В новой версии:
- Дополнительные материалы
- Задачи с автоматической проверкой решения
- Исследовательские задачи
Оператор присваивания. Арифметические выражения.
В языке программирования Си, существуют различные операторы. Самым главным является оператор присваивания, который обозначается символом =. Он используется в любой программе, кроме простейших, типа нашей первой программы, выводящей на экран Hello world. Как вы уже помните из урока программирования посвященного типам данных, с помощью него мы присваиваем переменной находящейся слева от оператора присваивания, значение выражения находящегося справа от него. Например:
Листинг 4.1
int a,b;
a=7;// переменной a присвоить значение 7
b=2;// переменной b присвоить значение 2
Также есть операторы, отвечающие за простейшие арифметические действия, такие как сложение, вычитание, умножение и деление.
«+» - сложение
«-» - вычитание
«*» - умножение
«/» - деление
Кроме четырех основных есть еще такая операция как получение остатка от деления «%».
Их можно использовать совместно с оператором присваивания. Например:
Листинг 4.2.
int a;
a=7+3;// переменной a присвоить результат выражения 7+3, т.е.в неё запишется 10
a=a-2;// переменной a присвоить результат выражения a-2
Обратите внимание на последнюю строчку. С точки зрения математики такая запись не имеет смысла. Это надо понимать следующим образом. Сначала берется значение переменной a, из него вычитается 2 и после этого результат этого выражения записывается снова в переменную a. В результате работы программы Листинг 4.2, в переменной a будет значение 8. ( Во второй строке мы присвоили её значение 10. Потом, в третей строке, мы берем 10 вычитаем 2, получаем 8, и записываем этот результат снова в переменную а.)
Кстати, очень важное замечание.
После того как мы объявили переменную, её значение не определено, в ней содержится какой-то мусор, не стоит считать что её значение после объявления равно 0.
Т.е. пока мы в переменную a не сохранили значение 10, там был непонятный мусор.
Еще один важный момент. Посмотрите на листинг 4.3
Листинг 4.3
int a,b;
a=10;// переменной a 10
b=a-2;// переменной b присвоить результат выражения a-2
Когда мы используем переменную в каком-то выражении мы работаем не с самой переменной, а только со значением, которое в ней сохранено. Т.е. когда мы переменной b присваиваем значение выражения a-2, в переменной a так и остается значение 10. Оно на 2 не уменьшается. Компьютер в выражение a-2 подставляет значение переменной a, т.е. он заменяет a-2, на 10-2.
Теперь рассмотрим простейшую программу
Листинг 4.4
#include <stdio.h>
int main()
{
int a,b;
float c;
a=7;
b=2;
c=a+b; // в переменную с записать сумму переменных a и b
printf("summa %f\n", c);
c=a-b;
printf("raznozt' %f\n", c);
c=a*b;
printf("proizvedenie %f\n", c);
c=a/b;
printf("delenie %f\n", c);
c=a%b;
printf("ostatok ot deleniya %f\n", c);
return (0);
}
Если вы были внимательны, то заметили, наверное, что при делении получился неправильный ответ. 7 поделить на 2 равняется 3.5.
Это одна из особенностей языка программирования Си.
При делении целочисленной переменной на целочисленную переменную остаток от деления теряется. Поэтому 7/2 получилось 3.
Чтобы получить правильный ответ нужно делитель или делимое преобразовать к вещественному типу float. Для этого, перед переменной в скобочках нужно написать тип, к которому она преобразуется.
Листинг 4.5
c=(float)a/b;
c=a/(float)b;
Такая операция называется явным преобразованием типа.Таким образом можно привести и переменную типа float к типу int. Но тогда мы потеряем всю дробную часть которая стоит после точки. О преобразовании типов в языке Си, мы ещё будем говорить в следующих уроках.
Операторы инкремента и декримента.
Теперь разберемся с операциями инкремента и декремента.
Оператор инкремента (++) увеличивает значение переменной на единицу.
Листинг 4.6
int a;
a++;
++a;
Оператор декремента (--) уменьшает значение переменной на единицу.
Листинг 4.7
int a;
a--;
--a;
В принципе эти операторы равносильны обычному присваиванию единице:
Листинг 4.8
int a;
a=a+1;
a=a-1;
Но поскольку в программировании очень часто приходится прибавлять и отнимать единицу, решено было придумать специальные операторы для этих действий. Вообще есть разница между написанием ++a и a++ (соответственно --а и а--). Но она значима только, когда операторы инкремента и декремента используются в составе более сложных выражений.
Сокращенный вид записи арифметических выражений.
Представьте ситуацию, что нам нужно взять значение из переменной а, умножить его на 4 и опять сохранить в переменную a. Для этого нам нужно написать:
Листинг 4.9
int a,b;
a=a*4;
Но в таких случаях программисты используют сокращенную запись арифметических выражений.Такая сокращенная запись предусмотрена для всех пяти основных арифметических операторов.
Полная запись
|
Сокращенная запись
|
Значение
|
a=a+b;
|
a+=b;
|
к a прибавить b
|
a=a-b;
|
a-=b;
|
из a вычесть b
|
a=a*b;
|
a*=b;
|
a умножить на b
|
a=a/b;
|
a/=b;
|
a поделить на b
|
a=a%b;
|
a%=b;
|
остаток от деления a на b
|
Стандартная бибиотека математических функций math.h.
В принципе эти 5 операторов это все арифметические операторы, которые знает язык Си. Для всех остальных действий таких как: возведение в степень, модуль числа, извлечение квадратного корня, тригонометрические функции и других, используется стандартная библиотека математических функций math.h. В ней определено очень много стандартных функций.
Вот некоторые из них:
double sqrt(double x) – извлечь квадратный корень из числа.
double fabs(double x) – возвращает модуль числа х
double pow(double x, double y) – возводит x в степень y
double cos(double x) – вычисляет косинус х (х в радианах)
double sin(double x) – вычисляет синус x (х в радианах)
double tan(double x) – вычисляет тангенс х (х в радианах)
double asin(double x) – вычисляет арксинус х в радианах
double atan(double x) – вычисляет арктангенс х в радианах
double ceil(double x) – округляет число х вверх до ближайщего целого, возвращает вещественное
double exp(double x) – возвращает е в степени х
double floor(double x) – округляет х вниз до ближайщего целого, возвращает вещественное
double log(double x) – возвращает натуральный логарифм х
double log10(double x) – возвращает десятичный логарифм х
Особое внимание уделите тригонометрическим функциям. Так как они принимают значения не в градусах, а в радианах. Например, cos(60) не будет равен 0.5 потому, что мы посчитали синус угла 60 радиан, а не 60 градусов. Тоже самое относится и к значениям возращаемыми обратными тригонометрическими функциями (acos, asin, …). Они возвращает значения в радианах.
Приоритет операций.
Всем наверно с детства знакома задачка с подковыркой, когда опоненту говорят сколько будет два плюс два умножить на два. Многие забывают что в математике сначала надо умножать, а потом только прибавлять, и потому ответ не 8, а 6.
В языке программирования Си, тоже есть определенны порядок выполнения арифметических операций. Он очень похож на тот, который мы используем в обычной жизни.
- Операции в скобках
- Функции (типа sqrt, cos и другие)
- Умножение, деление, остаток от деления (слева направо, как в обычной жизни)
- Сложение вычитание (слева направо, как в обычной жизни)
Для примера рассмотрим следующее выражение записанное на языке Си:
Над каждым действием вы видите каким оно выполняется по счету.
Для изменения порядка выполнения операций используются круглые скобки. Например, если записать:
Листинг 4.10
x = a/b*c;
Компьютер сначала поделит а на b, и потом умножит полученный результат на с. Но, если нам надо посчитать чему равно a деленное на произведение b*c, тогда нужно использовать скобки.
Листинг 4.11
x = a/(b*c);
Я считаю, что лучше всегда явно указывать приоритет операций с помощью скобок, дабы не получить ошибку которую потом очень сложно будет выявить.
На этом на сегодня всё.
Резюме урока:
- Узнали подробности использования оператора присваивания.
- Ознакомились с основными арифметическими операциями, и особенностями их использования.
- Узнали новые функции описанные в стандартной библиотеке math.h
- Ознакомились с сокращенной записью арифметических выражений.
- Узнали про операции инкремента и декремента
- Рассмотрели приоритет выполнения операций
Задание для практической работы
- Написать программу которая объявляет переменную и сразу выводит её значение на экран.Убедиться что в ней содержится мусор. Для этого необходимо воспользоваться пошаговой отладкой. ( Позже будет дописано как это сделать)
- Напишите программу и проверьте, что сокращенная и полная запись арифметических выражений эквивалентна.
- Дано число x. Вычислите число x6 при помощи трех операций умножения. Больше ничего использовать нельзя.
- Потренируйтесь в записи обычных формул, в соответствии с правилами языка Си.Пусть дано а=10, с=6, d=100. Напишите программы вычисляющие следующие выражения:
Если всё сделано правильно, то ответ первого выражения будет 0.5
Если все сделано правильно, то ответ второго выражения будет 0.1
- Дано трехзначное число. Найдите сумму его цифр.
Задачи с автоматической проверкой решения из новой версии курса.
Задачи на основные арифметические операции.
Если Вам понравился этот урок, расскажите о нем вашим друзьям. В
этом Вам могут помочь кнопки основных социальных сетей, расположенные
ниже. Вам остается всего лишь кликнуть по любой из них.
//Задание1
ОтветитьУдалить#include "stdio.h"
int main(void)
{
int a;
printf("%d\n",a);
return(0);
}
Насколько я понял именно это требовалось сделать. Но прога не запустилась, матюкнулась и закрылась.
//Задание 2
ОтветитьУдалить#include "stdio.h"
int main()
{
int a=4,b=2;
float c;
a+=b;
printf("%d\n",a);
a=4;
c=a+b;
printf("%f\n",c);
a-=b;
printf("%d\n",a);
a=4;
c=a-b;
printf("%f\n",c);
a*=b;
printf("%d\n",a);
a=4;
c=a*b;
printf("%f\n",c);
a/=b;
printf("%d\n",a);
a=4;
c=a/b;
printf("%f\n",c);
return(0);
}
//Задание3
ОтветитьУдалить#include "stdio.h"
int main(void)
{
int a=2,b=2;
a*=b,a*=b,a*=a;
printf("%d\n",a);
return(0);
}
в ответе первого выражения ответ далеко не 0,5,а -0,020502.
ОтветитьУдалитьСчитал лично сам на листочке.
Если поменять с=не 100,а 6 и d=не 6,а 100 то тогда все складывается. Вот код.
ОтветитьУдалить#include "stdio.h"
#include "math.h"
int main()
{
float a=10,c=6,d=100,x;
x=(((c-sqrt(d))/(c+sqrt(d)))-
((c+sqrt(d))/(c-sqrt(d))))/
((2*c*sqrt(d))/(c+sqrt(d)));
double sqrt(double x);
printf("%f\n",x);
return(0);
}
#include "stdio.h"
ОтветитьУдалить#include "math.h"
int main()
{
float a=10,x;
x=-1/(1-a/(1-1/(a+1)));
printf("%f\n",x);
return(0);
}
ответ 0,1,а не 1,1
#include "stdio.h"
ОтветитьУдалитьint main()
{
float a,b,c,x;
printf("Vvedite trehzna4noe 4islo zapisbIvaya kazduy cifru 4erez probel\n");
scanf("%f%f%f",&a,&b,&c);
x=a+b+c;
printf("Summa kazhdogo ego 4isla=%f\n",x);
return(0);
}
Добрый вечер, Камиль.
ОтветитьУдалить1)Понятно. В принципе это нормальная реакция. Если прочитать сообщение об ошибке, там написано, что не инициализирована переменная. Если рядом с кодом поставить напротив вывода точку останова, и нажать F5, то можно убедиться что в переменной записано.
2)Да, всё хорошо.
3)Неправильно. У нас одна переменная, а вы используете две. Кстати, когда выполните это задание, подумайте какую максимальную степень числа x можно получить используя три знака умножения.
4.1)Да, всё верно, это я случайно ошибся. Исправлю. Единственное, что не стоило объявлять переменную a, она всё равно не используется.
4.2) Все правильно, опять у меня ошибка.
5)Хитро, но не правильно. =) На вход поступает обычное трехзначное число, а не записанное по цифрам, через пробел. Подумайте, как тут можно использовать свойство операции деления целых чисел, и получение остатка от деления
#include "stdio.h"
Удалить#include "math.h"
int main ()
{
float a=10;
a=(-1)*(1/(1-(a/(1-1/(a++)))));
printf("%f", a);
return(0);
}
У вас изначально было правильно ответ приблизительно равен 1.1, там Камиль сам ошибся вроде...
Этот комментарий был удален автором.
УдалитьВ третьем задании максимальную степень которую можно получить-это 8.
ОтветитьУдалить//Задание 3v2
#include "stdio.h"
int main(void)
{
int a=2,x;
x=(a*=a)*(a*a);
printf("%d\n",x);
return(0);
}
8 правильный ответ, но программа опять немного не такая. Не стоит объявлять еще одну переменную.
ОтветитьУдалитьint x=2;
Всё, больше ничего. Итоговое число тоже должно храниться в этой х.
#include "stdio.h"
ОтветитьУдалитьint main(void)
{
int x=2;
x=(x*=x)*(x*x);
printf("%d\n",x);
return(0);
}
Засчитано.Кстати, довольно оригинально. Использован даже приоритет операций. =)
ОтветитьУдалить#include "stdio.h"
ОтветитьУдалитьint main(void)
{
int x;
scanf("%d",&x);
x=(x*=x)*(x*x);
printf("%d\n",x);
return(0);
Не обязательно использовать конкертнное число...
=D Конечно необязательно. Но не распыляйтесь, это заданиг уже засчитано.
ОтветитьУдалитьДано трехзначное число. Найдите сумму его цифр.
ОтветитьУдалитьГолову уже сломал, вообще не пойму как сделать.
Пробовал через getchar, что бы он каждый символ отдельно так сказать определил и сложить их потом, но в итоге ничего не вышло.
ОтветитьУдалитьЯ уже давал же подсказку: "Подумайте, как тут можно использовать свойство операции деления целых чисел, и получение остатка от деления."
ОтветитьУдалитьДа никак. Может для определенного числа можно, но составить алгоритм для всех чисел я думаю с помощью деления и получения остатка нельзя...
ОтветитьУдалитьВсегда, когда есть общая задача, следует рассмотреть частный случай, и потом пытаться распространить на все оставшиеся.
ОтветитьУдалитьПусть a=342;
Как получить в переменной c1 первую цифру этого числа, т.е. тройку?
#include "stdio.h"
ОтветитьУдалитьint main(void)
{
int x,c1,c2,c3,c;
scanf("%d",&x);
c1=x/100;
c2=x/10-c1*10;
c3=x-c1*100-c2*10;
c=c1+c2+c3;
printf("%d\n",c);
return(0);
}
Засчитано. =)
ОтветитьУдалитьНа следующем уроке в случаем не if и else будете разбирать?
ОтветитьУдалитьДа, и это тоже =)))
ОтветитьУдалитьПоследнее задание
ОтветитьУдалить#include
int main()
{
int x,c1,c2,c3;
scanf("%i",&x);
c1=x/100;
c2=x/10-c1*10;
c3=x-c1*100-c2*10;
x=c1+c2+c3;
printf("%i",x);
return 0;
}
ок. Засчитано.
Удалить{
ОтветитьУдалитьint a;
cin>>a;
a=(a/100)+(a%10)+((a/10)%10);
cout<<a;
}
Это С++. Задания надо решать на чистом Си. =)
Удалитьв шестом 0.5 получилось
ОтветитьУдалить#include "stdio.h"
#include "math.h"
int main()
{
float a=10,c=6,d=100,x;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*sqrt(d))/(c+sqrt(d)));
double sqrt(double x);
printf("%f", x);
return(0);
}
Если ответ совпал, значит верно.
Удалить6.2
ОтветитьУдалить#include "stdio.h"
#include "math.h"
int main()
{
float a,x;
a=10;
x=-(1/(1-(a/(1-(1/(a+1))))));
printf("%f", x);
return(0);
}
если ответ совпадает, то все верно.
Удалить//последнее задание
ОтветитьУдалить#include
using namespace std;
int main ()
{
int a, c1, c2, c3;
cout<<"Vvedite trehznachnoe chislo: ";
cin>>a;
c1=a/100;
c2=a/10-c1*10;
c3=a-a/10*10;
a=c1+c2+c3;
cout<<a;
cout<<"\n";
return 0;
}
Это С++. Даже смотреть не буду. =)
УдалитьЗадание 3
ОтветитьУдалить#include
int main()
{
int x;
x=8;
x*=x*x;
x*=x;
printf("%d\n", x);
return(0);
}
Хорошо. Засчитано. =)
УдалитьПопробовал этот способ, но при вводе 10 программа выдает неправильный результат.
УдалитьЗадание № 4.1
ОтветитьУдалить#include
#include
int main()
{
int a,c;
float d,x;
a=10;
c=6;
d=100;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/(((2*c*sqrt(d)))/(c+sqrt(d)));
printf("%.1f\n", x);
return(0);
}
совпадает ответ? Если да, то все верно. =)
УдалитьЗадание № 4.2
ОтветитьУдалить#include
#include
int main()
{
int c;
float a,d,x;
a=10;
c=6;
d=100;
x=-(1/(1-(a/(1-(1/(a+1))))));
printf("%.1f\n", x);
return(0);
}
Если ответ совпадает, значит правильно. Совпадает?
УдалитьЗадание № 5
ОтветитьУдалить#include
#include
int main()
{
int a,b;
float c,d,e,x;
printf("Vvedite trexznachnoe chislo: ");
scanf("%d", &a);
b=a%100;
c=b/10;
d=a/100;
e=a%10;
x=c+d+e;
printf("Summa cifr etogo chisla = ");
printf("%.0f\n", x);
return(0);
}
Хорошо. Засчитано. =)
Удалить#include "stdio.h"
ОтветитьУдалить#include "math.h"
int main(void)
{
int a=10, c=6, d=100;
double otv1=0, otv2=0;
otv1=((c-(sqrt(d)))/((sqrt(d))+c))-((c+(sqrt(d)))/(c-(sqrt(d))))/(2*c*(sqrt(d))/c+(sqrt(d)));
printf("%f",otv1);
return 0;
}
В вижуал студии не выполнится, там нет функции sqrt(int), там только float. Даже если заменить на float, ответ не такой получается. Ну и непонятно зачем объявляется otv2.
УдалитьУ вас в этом уроке опечатка, вы пишите - "Оператор инкремента (--) уменьшает значение переменной на единицу."
ОтветитьУдалитьА как я понял то это (--) декремент.
Вы не написали в этом уроке какой тип данных нужно использовать для стандартной библиотеки математических функций math.h. Оказывается, что функции этой библиотеки работают только с типом данных для вещественных чисел – float. А я долго не мог понять, почему у меня не работают эти функции с int.
Первое упражнение не могу выполнить, так как не понимаю, что такое “пошаговая отладка”. 3 и 5 задание пришлось подсмотреть в коменты, реально очень сложные оказались для меня. Решения остальных заданий привожу ниже:
/*Урок 4 задание 2*/
/*#include
int main ()
{
int a,b;
a=6;
b=2;
a+=b;
printf("6+2=%d\n",a);
a-=b;
printf("8-2=%d\n",a);
a*=b;
printf("6*2=%d\n",a);
a/=b;
printf("12/2=%d\n",a);
a%=b;
printf("0=%d\n",a);
return (0);
}*/
/*Урок 4 задание 3*/
/*#include
#include
int main ()
{
int x=3;
x=(x=x*x)*(x*x);
printf("%d\n",x);
return (0);
}
*/
/*Урок 4 задание 4.1*/
/*#include
#include
int main ()
{
float a=10,c=6,d=100,b;
b=(((c-sqrt(d))/(c+sqrt(d)))-(c+sqrt(d))/(c-sqrt(d)))/((2*c*sqrt(d))/(c+sqrt(d)));
printf("%.1f\n",b);
return (0);
}
//Урок 4 задание 4.2
#include
int main ()
{
float a=10,c=6,d=100,b;
b=(-1/(1-(a/(1-(1/(a+1))))));
printf("%.1f\n",b);
return (0);
}
*/
// Урок 4 задание 5
#include
int main()
{
int a,b,c,x;
scanf("%d",&x);
a=x/100;
b=x/10-a*10;
c=x-a*100-b*10;
x=a+b+c;
printf("%d",x);
return 0;
}
Добрый вечер Виктор.
УдалитьСпасибо за внимательность. Да, конечно же это декремент. Моя ошибка признаюсь. Исправил уже.
А вот насчет математических функций вы не правы. Посмотрите, как даны прототипы этих функций:
double sqrt(double x)
Как понимать эту запись описано в третьем занятии. Дополнительных слов я считаю не нужно.
Задания проверять не буду уже. Ориентируйтесь на образцовые решения и на решения других участников.
Если что-то будет непонятно, с радостью отвечу.
5 задание
ОтветитьУдалить//Дано трехзначное число. Найдите сумму его цифр.
#include 'stdio.h'
int main ()
{
int a;
float b,c,d,i,f,Summa;
printf ("Vvedite 3znacnoe chislo\n");
scanf ("%d",&a);
b=a%10;
c=a/10;
d=(int)c%10;
i=(int)c/10;
f=(int)i%10;
Summa=b+d+f;
printf ("%1.0f\n",Summa);
return (0);
}
Работает. А теперь скажите, зачем сначала объявлять переменные типа float, а потом приводить их к int? Это что за шаманские танцы с бубном?
УдалитьИ кавычки не одинарные, а двойные.
#include "stdio.h"
А какую команду нужно ввести, чтобы после вывода результата консоль оставалсь открытой и я мог вводить цифры дальше , т.е считать как на калькуляторе?
ОтветитьУдалитьЭто нельзя сделать одной командой. Это можно организовать с помощь цикла, например.=)
УдалитьЗдравствуйте! Спасибо большое за ваши уроки! Долго искал с чего начать обучение, ваш блог, на мой взляд, лучшее из всего что я нашёл. Во всём разобрался, вот только с третьим заданием справился не правильно. Подсмотрел в комментах верное решение, но не понял одного в этой строке: "x=(x*=x)*(x*x);". Почему (x*=x) даёт х в четвёртой степени? Можно подробнее этот момент?
ОтветитьУдалитьТут дело в приоритете операций.
Удалить(x*=x) дает х во второй степени, а не в 4. Но теперь получается у нас в х сохранено значение х в квадрате.
То есть следующее действие в скобках х*х дает нам х в четвертой степени.
ну и уже x^2 *x^4 получаем х^6.
Теперь понятнее? =)
Получилось 0,5 только если c=6,d=100,a=10
ОтветитьУдалить{
float a,c,d,e,f,g,y,x; //e=c-@d ,f=c+@d ,g=2*c*@d,a=10,c=6,d=100 ,@-это знак корня квадратного
printf("vvedite a,c,d\n");
scanf("%f%f%f",&a,&c,&d);
y= sqrt(d);
e=c-y;
f=c+y;
g=2*c*y;
x=(e/f-f/e)/(g/f);
printf("%f",x);
return(0);
}
#include
ОтветитьУдалить#include
#define INT 10
int main()
{
int a = INT;
a *= a;
a *= a * a;
printf("%i\n", a);
/*проверка значения*/
a = INT;
printf("%d\n", (int)pow((double)a, 6.0));
return 0;
}
ну считает правильно конечно. Только не стоило так заморачиваться с константами и т.д. Но так как формат не оговорен в условии, пускай будет так. =)
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалить4
ОтветитьУдалить#include
#include
int main()
{
double a,c,d,x;
a=10;
c=6;
d=100;
x=(((c-sqrt(d))/(c+sqrt(d)))-
((c+sqrt(d))/(c-sqrt(d))))/
((2*c*(sqrt(d)))/(c+sqrt(d)));
double sqrt(double x);
printf("otvet x=%f\n",x);
return (0);
}
Ольга, вы умница. В такой день занимались полезным делом. Вечером посмотрю ваши задачи.
Удалить4,2
ОтветитьУдалить#include
#include
int main()
{
double a,c,d,x;
a=10;
c=6;
d=100;
x=(-1)/(1-a/(1-1/(a+1)));
printf("otvet x=%f\n",x);
return (0);
}
5 подсматривала правда .. но все таки ...
ОтветитьУдалить#include "stdio.h"
int main(void)
{
int x,a,b,c,y;
scanf("%d",&x);
a=x/100;
b=x/10-a*10;
c=x-a*100-b*10;
y=a+b+c;
printf("%d\n",y);
return (0);
}
насчет 5-го задания вообще не могу врубиться(
ОтветитьУдалитьдано, например, 234=х
а=234/100=2.34
b=234/10-2.34*10=0
с=аналогично нулю.
поясните подробнее пожалуйста.
Вы просто невнимательно прочитали урок.=)
Удалить" Если вы были внимательны, то заметили, наверное, что при делении получился неправильный ответ. 7 поделить на 2 равняется 3.5.
Это одна из особенностей языка программирования Си.
При делении целочисленной переменной на целочисленную переменную остаток от деления теряется. Поэтому 7/2 получилось 3."
То есть, в вашем случае при делении 234/100 получится 2.
Решение последней задачи:
ОтветитьУдалить#include;
int main(void)
{
int a,s,p,e,d,rez;
printf("Vvedite trehznachnoe chislo:\n");
scanf("%d",&a);
p=a%100;
e=p%10;
d=(p-e)/10;
s=(a-p)/100;
rez=s+d+e;
printf("Rez=%d",rez);
return(0);
}
Здравствуйте.Спасибо Вам за уроки.очень интерестно.вот мой вариант последней задачи
ОтветитьУдалить#include
#include
int main()
{
int a,b,c,d,e;
printf("vvedite trehznahnoe hislo");
scanf_s("%d",&a);b=(a/100);
c=((a%100)/10);
d=(a%10);
e=b+c+d;
printf("summa cifr=%d",e);
return(0);
}
Здравствуйте!
ОтветитьУдалитьА. Компилятор не жалуется на отсутствие "return(0);", программки работают и без этой строчки. Расскажите, пожалуйста, почему так получается.
Б. Задание №3. Почему-то некоторые числа >16 возводит в степень неточно (хотя они <(10^+38)), если вместо "float" написать "double" - вообще ересь...
int main()
{
float x;
printf("Vvedite chislo x\n");
scanf("%f", &x);
x*=x;
x=x*x*x;
printf("x^6=%f\n", x);
}
В. Задание №5.
#include
int main()
{
printf("Vvedite trehznachnoe chislo\n");
int a;
scanf("%d", &a);
a=a/100+(a%100)/10+a%10;
printf("Summa zhifr %d\n", a);
}
А нет никакого способа считывать по одному символу так, чтобы потом этот символ распознавался, как цифра? Долго убивалась об стенку, пытаясь сделать через getchar =)
Г. Задание №4.
#include
#include
int main()
{
float c=6, d=100, a=10;
c=((c-sqrt(d))/(c+sqrt(d))-(c+sqrt(d))/(c-sqrt(d)))/((2*c*sqrt(d))/(c+sqrt(d)));
a=-1/(1-a/(1-1/(a+1)));
printf("Otvety: %f %f\n", c,a);
return(0);
}
Ответы сошлись =)
Д. И ещё один глупый вопрос... У меня в MS Visual (2008) вместо курсора какой-то чёрный всепоглощающий прямоугольник. То есть я ошибаюсь где-то в начале строки, начинаю исправлять ошибку - а эта штуковина тем временем кушает стоящие впереди неё буковки (и приходится переписывать всю строчку). Можно ли как-нибудь настроить курсор?
Конечно, это означает, что Вы случайно нажали на клавиатуре кнопку -"insert", нажмите её повторно!
УдалитьЗачем прописывать функцию double sqrt(double x)? И если надо, то где? Вначале уравнения или после? Проверял, ответы сходятся.
ОтветитьУдалить#include
#include
float main()
{
float a=10, c=6, d=100, x, y;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*sqrt(d))/(c+sqrt(d)));
y=-((1)/(1-(a/(1-(1/(a+1))))));
printf("x = %f \n",x);
printf("y = %f \n",y);
return(0);
}
Не понял вопроса. Уточните пожалуйста.
УдалитьНу выше, есть пару работ где используется
Удалитьdouble sqrt(double x)
А в моей же работе, не используется, но все работает, так зачем же она ?
Я тут уже написал ответ, но потом решил, что вам полезнее будет самому с эти разобраться, а я лишь подскажу.
УдалитьДавайте с другого конца зайдем. Что по вашему должна делать такая строчка? Что она означает?
Аналогично, даже не задумался над тем прописывать или нет строку. Видно не понял её сути!=(
Удалить#include
ОтветитьУдалитьint main()
{
int a,b,c,d;
a=getchar()-'0';
b=getchar()-'0';
c=getchar()-'0';
d=a+b+c;
printf("x=%d",d);
return(0);
}
Хорошо. Мне нравится. =))
Удалитьа можно узнать откуда взялось -'0' ?
УдалитьА подумать? А попробовать посмотреть, что будет если этот нуль убрать?
УдалитьПодсказка: таблица ASCII.
Здравствуйте! Подскажите, почему результат -0,500000 и по какому принципу расставляются скобочки. Заранее спасибо. вот мое решение:
ОтветитьУдалить#include
#include
int main (void)
{
float a=10,c=6,d=100,x;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d)/(c-sqrt(d)))))/((2*c*sqrt(d))/(c+sqrt(d)));
printf("%f\n",x);
return(0);
}
Добрый день! У Вас немного нарушен порядок выполнения действий, как раз из-за неправильно расстановки скобок. Принцип здесь простой. Необходимо точно установить порядок действий. В программировании, лучше больше скобок поставить и быть точно уверенным, что действие будет выполнено так, как нужно. Я сам так всегда делаю. И проверяю, на маленьких примерах. Можно разбить на последовательность действий, потихоньку добавляя действие за действием, контролируя на каждом шаге результат.
УдалитьСпасибо за внимание, буду пробовать:)
Удалитьа уравнение можно решить? вот оно
ОтветитьУдалить#include
int main()
{
int a;
56=55+a;
printf("otvet %d",a);
return (0);
}
? буду благодарен за ответ
Спасибо большое за уроки.
ОтветитьУдалитьВсё сделал кроме 5, ибо я не знал что делать. Посмотрел ответы, не понял, погуглил, прозрел(почти).
Спс+)
Пожалуйста =)))
УдалитьЗдравствуйте! Подскажите пожалуйста в чем у меня ошибка. Сравнивал с правильными ответами ничего не нашел, а программа выдает 3 ошибки.
ОтветитьУдалитьДаже когда пробовал правильное подставлять все равно ошибки.
Вот программа:
#include "stdio.h"
#include "math.h"
int main ()
{
float c=6,d=100,x;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*(sqrt(d))/(c+sqrt(d)));
double sqrt(double x);
printf("%f",x);
return(0);
}
Как минимум, у вас неуравновешены скобки. Открывающих на одну больше, чем закрывающих. )
УдалитьНе пойму почему ответы выходят х=0.500000 y=0.100000
ОтветитьУдалить// задание 5
#include
#include
int main(void)
{
float a=10, c=6, d=100, x, y;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*(sqrt(d)))/(c+sqrt(d)));
y=(-1)/(1-a/(1-1/(a+1)));
printf("%f %f\n", x,y);
return(0);
}
В смысле почему ответы выходят? Если все вычисления произвести, то получится такой ответ. )))
Удалить#include "stdafx.h"
ОтветитьУдалить#include
#include
int _tmain ()
{
float a=10, c=6, d=100, x, y;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*(sqrt(d)))/(c+sqrt(d)));
y=(-1)/(1-a/(1-1/(a+1)));
printf("%1.1f %1.1f\n", x,y);
return(0);
}
Доброго времени суток!
ОтветитьУдалить#include
int main (void)
{
int x,c1,c2,c3,c;
printf("Vvedite trehznachnoe chislo \n");
scanf("%d",&x);
c1=x/100;
c2=x/10-c1*10;
c3=x-c1*100-c2*10;
c=c1+c2+c3;
printf("Summa sifr vashego chisla = %d\n",c);
return 0;
}
Сначала никак не могла понять, но потом вспомнила, что при делении целочисленной переменной остаток теряется.
Спасибо!
Поздравляю =))) Пожалуйста. )
Удалить#include "stdio.h"
ОтветитьУдалить#include "math.h"
int main(void)
{
float a=10,c=6,d=100,x;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*sqrt(d))/(c+sqrt(d)));
printf("%f\n",x);
x=-1/(1-a/(1-1/(a+1)));
printf("%f\n",x);
return(0);
}
Если компилируется и ответы совпадают, значит все правильно. ))
Удалить#include
ОтветитьУдалитьint main (void)
{
int x;
printf("d \n",x);
}
После этого нажал Отладка - Шаг с заходом, установил стрелку на 5-ю строку и там написано, что значение х = -711787564. Это ведь и есть тот мусор?
именно он =)))
Удалить//robota
ОтветитьУдалить#include
int main()
{
int x,a,b;
x=0;
scanf("%d",&x);
a=x*x*x;
a=b;
b=a*a;
printf("%d",c);
return (0);
}
Подскажите в чем ошибка((
Я думаю компилятор вам лучше меня подскажет. =)))
УдалитьВы пытаетесь вывести переменную с, которой нет в вашей программе. )
#include
ОтветитьУдалитьint main()
{
int a,b;
printf("Vvedite celoe chislo X i nazmite Enter \n");
scanf("%d", &a);
a=a*a;
b=a*a*a;
printf("x v 6-oi stepeni =%d\n", b);
return (0);
}
Хорошо. А теперь тоже самое, использую одну переменную )))
УдалитьЗадание 1
ОтветитьУдалить#include
int main()
{
int c;
printf("%d",c);
}
Выдало ошибку...
Задание 2
#include
int main()
{
float a,b;
printf("Vvedite 2 celih chisla\n");
scanf("%f%f",&a,&b);
printf("Ishodnie chisla: a=%.0f, b=%.0f\n",a,b);
printf("c=a+=b=%.0f c=a+b=%.0f\n",a+=b,a+b);
printf("c=a-=b=%.0f c=a-b=%.0f\n",a-=b,a-b);
printf("c=a*=b=%.0f c=a*b=%.0f\n",a*=b,a*b);
printf("c=a/=b=%.2f c=a/b=%.2f\n",a/=b,a/b);
}
Задание 3
#include
int main()
{
int x;
printf("Vvedite chislo\n");
scanf("%d",&x);
x*=x*=x*x;
printf("%d",x);
}
Задание 4
#include
#include
int main()
{
float a=10,c=6,d=100,x,z;
z=sqrt(d);
x=((c-z)/(c+z)-(c+z)/(c-z))/((2*c*z)/(c+z));
printf("%.2f\n",x);
return 0;
}
#include
#include
int main()
{
float a=10,x;
x=-1/(1-(a/(1-(1/(a+1)))));
printf("%.2f\n",x);
return 0;
}
Задание 5
#include
#include
int main()
{
int a,x;
printf("Vvedite trehznachnoe celoe chislo: ");
scanf("%d",&a);
x=(a/100)+((a/10)%10)+(a%10);
printf("%d \n",x);
return 0;
}
Долго провозился...А нельзя сделать данное задание 5 через getchar???Любопытно...
Пятое мне больше всего понравилось. Может быть добавлю его в образцовые. )))
УдалитьВ четвертом предполагалось, что вы запишете это все без использования дополнительной переменной. )))
Cпасибо)
УдалитьНа счет переменной Z...было лень писать sqrt постоянно))
А вот если еще и X лишняя,то у меня только есть идея впихнуть формулу в printf("")...
#include
ОтветитьУдалить#include
int main(void)
{
int a,b,c,d,e,x;
printf("Vvedite trehznachnoe chislo\n");
scanf("%d", &a);
e=a%100;
b=a/100;
c=a%10;
d=e/10;
x=b+c+d;
printf("%d", x);
getch();
return(0);
}
Хорошо. )))
УдалитьНет, вру. Не хорошо. Слишком много переменных. А если бы у вас было двадцатизначное число? )))
Удалить//я вижу последнюю задачу вот такой
ОтветитьУдалить//нахождение суммы чисел в 3-х значном числе
#include
#include
int main()
{
int a,b;
printf("vvedite 3-h znacnoe cislo \n");
scanf("%d",&a);
b=a%10;//присвоение b остатка от деления а на 10, соответственно последней цифре в 3-х значном числе а
a=(a-(a%10))/10;//число приобразуем в 2-х значное
b=b+(a%10);//присвоение b остатка от деления а на 10, соответственно средней цифре в 3-х значном числе а
a=(a-(a%10))/10;//число преобразуем в 1-значное
b=b+a;//b присваивается значение суммы цифр 3-х значного а
printf("Summa cifr v cisle=%d \n",b);
return(0);
}
Хорошо, только не изящно. ))) Посмотрите, там выше есть решение Егора, оно красивое. )))
Удалить5 задание
ОтветитьУдалить#include "stdio.h"
#include "math.h"
int main ()
{
int a,b;
scanf("%d",&a);
b=a/100+a%100/10+a%100%10;
printf("%d\n",b);
return(0);
}
Хорошо. ))
УдалитьЗадание 3
ОтветитьУдалить#include
int main()
{
int a,x;
x=4;
a=x*x*x;
a=a*a;
printf(" %i\n", a);
return(0);
}
Задание 4
#include
#include
int main()
{
double a,c,d;
a=10;
c=6;
d=100;
float b,f;
f=sqrt(d);
f=((c-f)/(c+f)-(c+f)/(c-f))/(2*c*f/(c+f));
b=0-1/(1-a/(1-1/(a+1)));
printf("%f %f\n", f,b);
return(0);
}
Задание 5
#include
int main()
{
int a,c;
a=459;
c=a%10;
a=a/10;
c=c+a%10+a/10;
printf("%i\n", c);
return(0);
}
как то так...
В 5 задаче число вводится с клавиатуры.
УдалитьВ третьем задании нельзя использовать дополнительные переменные.
В четвертом, вы схитрили как и Егор Рябопашко.
Задание 3
Удалить#include
int main()
{
int x;
x=4;
x=x*x*x;
x=x*x;
printf(" %i\n", x);
return(0);
}
Да!
Удалитьпочему то не отобразились stdio.h и math.h, но оне там есть...
ОтветитьУдалитьВместо угловых скобок берите и в двойные кавычки. =)) Я где-то писал об этом. )
Удалить#include
ОтветитьУдалить#include
int main() {
int a,b,c,d,S;
printf("\n vvedite trehznachnoe chislo: ");
scanf("%d",&d);
a=d/100;
b=(d%100)/10;
c=d%10;
S=a+b+c;
printf("%d\n",S);
return 0;
}
Хорошо. =)
УдалитьЗадание первое
ОтветитьУдалитьЯ вообще не понял но сделал по вашему примеру
#include
int main(void)
{
int a;
a=10-2;
a=a-2;
printf("%d \n",a);
return(0);
}
Если не поняли, то стоит еще раз прочитать и разобраться.
УдалитьЗадание третье
ОтветитьУдалить#include
int main(void)
{
int a=4,b=5;
a*=b,a*=b,a*=a;
printf("%d \n",a);
return(0);
}
И по возможности объясните мне что я сделал в третьем задании
ОтветитьУдалитьНет уж, это вы должно объяснить мне, что вы сделали в третьем задании.)
Удалить4.1
ОтветитьУдалить#include
#include
int main()
{
float a=10,c=6,d=100,x;
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*sqrt(d))/(c+sqrt(d)));
double sqrt(double x);
printf("%f\n",x);
return(0);
}
у меня получается в 4,2 ответ 0,00000
ОтветитьУдалить#include
#include
int main()
{
int a=10,x;
x=-1/(1-a/(1-1/(a+1)));
printf("%f\n",x);
return(0);
}
не знаю что делать
2 Задание. При вычислении остатка от деления не понятно где именно должен быть указан тип данных? Вот на это ругается:
ОтветитьУдалить#include
int main()
{
float a=10.15, b=10.15;
a=(int)a%4;
b(int)%=4; // где именно должен находится указатель типа
printf ("%f %f",a,b);
return(0);
}
Сначала давайте разберемся.
Удалитьb(int)%=4;
что вы хотите сделать вот этой строчкой? =)
#include
ОтветитьУдалить//#include
int main()
{
int a, b, c, x, sum;
scanf_s("%d", &x);
c = x % 10;
b = (x % 100 - c) / 10;
a = (x - b - c) / 100;
sum = a + b + c;
printf("a = %d b = %d c = %d and a + b + c = %d\n", a, b, c, sum);
}
Хорошо.=)
УдалитьЗадание №3
ОтветитьУдалитьint main()
{
system("cls");
int o,arr[3] = {3,3,3};
printf("1 Yacheika %i\n2 Yacheika %i\n3 Yacheika %i\n", arr[0],arr[1],arr[2]);
o=arr[0]+arr[1]+arr[2];
printf("%i",o);
return 0;
}
Это что? =) Если последняя программа,то неправильно.
УдалитьУважаемый KaDeaT,
ОтветитьУдалитьВ этом уроке вы ничего не пишите о синтаксисе математических функций, как их использовать в программе как это было в предыдущих уроках.
Мне тоже не совсем понятно, как использовать математические функции. Я хотела сделать третье задание путем х^2+x^2+x^2. Но программа выдает ошибку еще при первом возведении. Подскажите пожалуйста, что не так.
ОтветитьУдалить#include
int main (void){
int x=2;
x= (double x, double 2);
printf("%d", x);
return (0); }
#include
ОтветитьУдалить#include
int main(void)
{
float a=10, c=6, d=100, x;
x = (((c-sqrt(d))/(c+sqrt(d)))-
((c+sqrt(d))/(c-sqrt(d))))/
((2*c*sqrt(d))/(c+sqrt(d)));
double sqrt(double x);
printf("%f \n"), x;
return(0);
}
Никак не пойму, почему не получается. Вроде, все скобки и знаки на месте. Не могли бы вы указать на ошибку?
Первая ошибка, это вот эта строчка
Удалитьdouble sqrt(double x);
Зачем она здесь записана по Вашему? ))
НУ а вторая, основная вот тут
printf("%f \n"), x;
Думаю найдете самостоятельно. )
Здравствуйте! Это Александр.
ОтветитьУдалитьВот пример решения задачи №3
#include "stdio.h"
#include "math.h"
int main()
{
float b;
printf("Vvedite chislo ");
scanf("%f",&b);
b*=b*b;
b*=b;
printf("Rezul'tat %-4.0f",b);
return(0);
}
А вот решение задачи №4
#include "stdio.h"
#include "math.h"
int main()
{
float a=10,c=6,d=100,x,y,z;
x=sqrt(d);
d=x;
y=(((c-d)/(c+d))-((c+d)/(c-d)))/(((2*c)*d)/(c+d));//
z=-1/(1-(a/(1-(1/(a+1)))));
printf("%-1.1f",y);
printf("\n");
printf("%-1.1f",z);
printf("\n");
return(0);
}
Первая хорошо. А во второй, что это за выкрутасы такие?
Удалитьx=sqrt(d);
d=x;
Во-первых можно было сделать вот так
d = sqrt(d);
А во-вторых, нельзя было использовать дополнительные штучки. Это вы уже схитрили, как и многие выше.
вот арифметические действия и сокращения.
ОтветитьУдалить//урок
#include
int main(void)
{
int a,b;
float c,e,d;
a=5;
b=6;
c=(float)a+b;
printf("summa %.2f \n",c);
c=(float)a-b;
printf("raznica %.2f \n",c);
e=7;
d=8;
e=e+d;
printf("bez sokracheniy %.2f\n",e);
e=7;
d=8;
e+=d;
printf("sorrachenie %.2f",e);
return(0);
}
Расчет двух выражений. задание №4.
ОтветитьУдалить//расчет выражений
#include
#include
int main(void)
{
float c,d,e,a,r;
c=6;
d=100;
a=10;
e=((c-sqrt(d))/(c+sqrt(d))-(c+sqrt(d))/(c-sqrt(d)))/(((2*c)*sqrt(d))/(c+sqrt(d)));
printf("rezultat perviy %f\n",e);
r=-(1/(1-(a/(1-(1/(a+1))))));
printf(" rezultat vtoroy %f",r);
return(0);
}
Да, хорошо. =)
УдалитьВот исправил задание где икс в шестую степень возводим. С делал с одной переменной.
ОтветитьУдалить//икс в степени шесть
#include
int main(void)
{
int x;
x=2;
x*=x;
x=x*=(x*x);
printf("bgt %d",x);
return(0);
}
Вот это правильно. ))
Удалитьпоследнее задание, применил остаток от деления и деление.
ОтветитьУдалить//сумма чисел трех значного числа.
#include
int main(void)
{
int c,c1,c2,c3;
c=333;
c1=c/100;
c3=(c/10)%10;
c2=c%10;
printf("bgt %d%d%d\n",c1,c3,c2);
c=c1+c2+c3;
printf("summa %d",c);
return(0);
}
Хорошо. )
УдалитьЗадание №3
ОтветитьУдалить#include
int main(void)
{
int a,b,d,c;
a=10;
c=6;
d=100;
b=(c-sqrt(d)/c+sqrt(d))-(c+sqrt(d)/c-sqrt(d))/(2*c*sqrt(d)/c+sqrt(d));
printf("%d\n",b);
return(0);
}
Спасибо! Очень интересные уроки.
ОтветитьУдалитьЗадание про сумму
int t, t1, t2, t3, summa;
printf("vvedite trexznacnoe cislo \n");
scanf("%d", &t);
t1=t%10;
t3=t/100;
t2=(t%100)/10;
summa=t1+t2+t3;
printf("summa cifr ravna %d \n", summa);
return(0);
//Задание последнее, некоторые библиотеки остались с с предыдущих заданий
ОтветитьУдалить#include
#include
#include
int main()
{
int x,k,s;
s = 0;
scanf("%d", &x);
while (x > 0)
{
k = x % 10;
x = x / 10;
s += k;
}
printf("%d\n", s);
system("pause");
return(0);
}
Не предполагалось использование циклов в этом задании.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалить#include
ОтветитьУдалитьint main()
{
int x, a, b, c;
scanf("%d", &x);
a=x*x;
b=a*a;
c=b*a;
printf("x^6=%d", c);
return (0);
}
Этот комментарий был удален автором.
ОтветитьУдалить#include
ОтветитьУдалить#include
int main()
{
float k, a, c, d;
a=10;
c=6;
d=100;
k=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*sqrt(d))/(c+sqrt(d)));
printf("Pervoe virazhenie ravno %0.1f \n", k);
return (0);
}
#include
ОтветитьУдалитьint main()
{
float k, a;
a=10;
k=-(1/(1-(a/(1-(1/(a+1))))));
printf("Vtoroe virazhenie ravno %0.1f \n", k);
return (0);
}
#include
ОтветитьУдалитьint main()
{
int a, b, c, d, e, g;
a=789;
b=a/100;
c=a%100;
d=c/10;
e=c%10;
g=b+d+e;
printf("Summa cifr chisla %i ravna %i \n", a, g);
return (0);
}
Этот комментарий был удален автором.
Удалить#include
Удалитьint main()
{
int a, g;
printf ("Vvedite trehznacnoe chislo\n");
scanf ("%d",&a);
g=a/100+(a%100)/10+(a%100)%10;
printf("Summa cifr chisla %i ravna %i \n", a, g);
return (0);
}
Я сделал неправильно, но хотел бы узнать, есть ли возможность исправить так написанную программу? Считанные getchar коды нужно преобразовать в числа.Можно ли это сделать?
ОтветитьУдалитьint main(){
int s;
int a,b,c;
printf("Vvedite trex znachnoe chislo \n");
a=getchar();
b=getchar();
c=getchar();
putchar(a);
printf("+");
putchar(b);
printf("+");
putchar(c);
printf("+");
s=a+b+c;
printf("=%d \n",s);
return(0);
}
задание номер 3
ОтветитьУдалитьКадет, можно вопрос? Когда будем оконные приложения делать?))))
#include
#include
int main()
{
int a=2;
a*=a*a;
printf("%d\n",a);
system("pause"); // Команда задержки экрана
return(0);
}
Конечно можно. Никогда. По-крайней мере я не планирую об этом писать. Хотя все еще может измениться.
Удалить"Дано число x. Вычислите число x6 при помощи трех операций умножения." А ведь я так и не поняла пока в комментарии не заглянула, что вместо х надо подставить любое натуральное число. И куда я только этот "х" не вставляла.
ОтветитьУдалитьПодскажите, такой вариант 2 задачи приемлем?
ОтветитьУдалить#include
int main()
{
int a,b;
a=5;
b=3;
a=a+b;
printf("summa a i b %d\n", a);
a=5;
b=3;
a+=b;
printf("summa a i b %d\n", a);
return(0);
}
Вполне приемлем для проверки одного действия. Хотя есть одна лишняя строчка, точнее бесполезная. Её можно удалить и ничего не изменится. Знаете какая?
УдалитьЧестно говоря нет, вроде при удалении строчек информация меняется на экране.
УдалитьВторая строчка b=3; не нужна. В этот момент в переменной b и так сохранено значение 3.
УдалитьЗдраствуйте. Подскажите по 3 задаче. Выписка 1 строки интересует.
ОтветитьУдалитьint x; //задаем с клавиатура, пусть будет 2
x=(x*=x)*(x*x);
я видно не правильно понимаю решение данного условия. если я правильно понимаю x=(x*=x) тут получаем 4, а вторые скобки (x*x) уже не по значению 2 считаются, а берется 4 ? тогда ответ получится верный.
2=(2*=2)*(2*2)=4*(4*4)=4*16=64. так происходит решение у данного условия ?
x=(x*=x)*(x*x);
УдалитьТут два выражения в скобках у них самый высокий приоритет.
Когда выполняется (x*=x) то в x записывается новое значение, и все последующие действия происходят уже с этим новым значением.
Т.е. если это двойка, то в этой скобке получается, что в х сохраняется значение четыре (х=х*2=4). Следующая скобка
(х*х) уже будет считаться, как (4*4) = (16).
Ну и последнее умножение 4*16=64.
Но вообще, хотя я ранее принял такое решение, но сейчас считаю, что это плохой код. Я не уверен, что порядок выполнения операций во всех компиляторах будет одинаковый. Если сначала посчитается правая скобка, то будет другое значение. Так лучше не писать.
моё решение 4 задачи
ОтветитьУдалить#include"stdio.h"
#include"math.h"
#include"locale.h"
//___((c-@d)/(c+@d)-(c+@d)/(c-@d))/((2*c*@d)/(c+@d))___
int main(void)
{
setlocale(LC_ALL,"");
float a,c,d;
double d_ur1,d_ur2;
a=10;
c=6;
d=100;
d_ur1=((c-sqrt(d))/(c+sqrt(d))-(c+sqrt(d))/(c-sqrt(d)))/((2*c*sqrt(d))/(c+sqrt(d)));
printf("Уравнение 1: %5.3f\n",d_ur1);
d_ur2=-(1/(1-(a/(1-(1/(a+1))))));
printf("Уравнение 2: %5.3f\n",d_ur2);
return(0);
}
3 мне показалась сложнее, сейчас буду 5 пробовать )
Если ответы совпали, то всё правильно. )
Удалитьа вот и 5 сделал :)
ОтветитьУдалить#include"stdio.h"
#include"locale.h"
int main()
{
setlocale(LC_ALL,"");
int i_n,a,b,c,summ;
printf("Введите трехзначное число: ");
scanf_s("%i",&i_n);
//ищем первое число a
a=i_n/100;
//ищем второе число b
b=(i_n/10)%10;
//ищем третье число c
c=i_n%10;
summ=a+b+c;
printf("Сумма трех чисел равна - %i\n",summ);
return(0);
}
Правильно.)
УдалитьЗдравствйте. Проверте пожалуйста задание №3.
ОтветитьУдалить#include
int main ()
{
int a=getchar(),g=getchar(),b=getchar(),f=439000;
float c=64.3,d=0.624,e=25.07;
printf("\t\t\t|==========|==========|\n");
printf("\t\t\t|%-10c|%10.2f|\n",a,c);
printf("\t\t\t|%-10c|%10.3f|\n",b,d);
printf("\t\t\t|%-10d|%10.2f|\n",f,e);
return (0);
}
Не совсем правильно. Эти числа:
Удалитьf=439000;
float c=64.3,d=0.624,e=25.07;
тоже нужно было считывать с клавиатуры.)
Добрый день.
ОтветитьУдалитьПрежде всего хочу поблагодарить Вас за уроки.
Нашел ошибку в уроке, мелочь конечно, но может запутать.
"Особое внимание уделите тригонометрическим функциям. Так как они принимают значения не в градусах, а в радианах. Например, cos(60) не будет равен 0.5 потому, что мы посчитали синус угла 60 радиан..."
С уважением, Алексей
Проверите?
ОтветитьУдалить#include
int main (void)
{
int a;
printf ("Vvedite trehznachnoe chislo \n");
scanf ("%d",&a);
a=a/100+((a%100)/10)+(a%100)%10;
printf("summa tsifr vvedennogo chisla ravna %d \n",a);
return (0);
}
Да, всё работает. Засчитано. )
Удалить#include
ОтветитьУдалить#include
int main (void)
{
int c=6,d=100;
float x;
x=((c-sqrt(d))/(c+sqrt(d))-(c+sqrt(d))/(c-sqrt(d)))/((2*c*sqrt(d))/(c+sqrt(d)));
double sqrt(double x);
printf("%f\n",x);
return(0);
}
тут ответ 0,50000
#include
#include
int main (void)
{
int a=10;
float x;
x=-1/(1-a/(1-1/(a+1)));
printf("%f\n",x);
return (0);
}
ответ 0
#include "stdio.h"
ОтветитьУдалитьint main()
{
int c1,c2,c3,c;
c1=getchar;
c2=getchar;
c3=getchar;
c=c1+c2+c3;
printf("%d\n",c);
return(0);
}
пытался решать по этой теме, с разными операторами и арифметическими выражениями, но наверное легче спрыгнуть с моста
и знаете что самое забавное?
ОтветитьУдалитьона работает.........................
Уважаемый KaDeat объясните мне пожалуйста как сделать третье задание. И подскажите почему при выполнении программы у меня появляются какие то большие числа числа, например ввожу 2, по идее должно быть 4, а мне выдает 18688.
ОтветитьУдалить# include
int main () {
int x,a,b;
b=a*1;
scanf ("A=%d\n", &a);
x=a*b;
printf ("X=%d\n", x);
return (0);}
Добрый вечер, Михаил.
УдалитьФункция printf ждет от вас строки в указанном формате. Он у вас A=%d\n. Значит, вы должны ввести A=2 и нажать энтер. Если вы вводите просто 2, то компьютер не понимает что вы от него хотите. Сначала просите читать строку в определенном формате, а потом сами же этот формат и нарушаете.
Ок, спасибо Кирилл! И еще проблема такого характера, когда начинаю новую программу. Компилятор ине выдает ошибку "Declaration terminated incorrectly" вот, а когда я открываю ранее сохраненный листинг и записываю в него слово в слово все с не рабочего,то все работает.
Удалить// Директивы препроессора
ОтветитьУдалить#include
#include "stdafx.h"
#include
int main()
{
int a, b;
float c;
printf("Enter a and b\n");
scanf_s("%d%d", &a,&b);
a+=b;
printf("summa %d\n",a);
a-=b;
printf("raznost %d\n",a- b);
a*=b;
printf("proizvedenie %d\n ",a);
a/=b;
printf("delenie %d\n",a/b);
a%=b;
printf("ostatok ot deleniya %d\n",a);
_getch();
return 0;
}
Задание 4.1 =)
ОтветитьУдалить#include "stdio.h"
#include "math.h"
int main()
{
int a, c, d;
float b, f, g, m, q;
a = 10;
c = 6;
d = 100;
b = (c - sqrt(float(d))) / (c + sqrt(float(d)));
f = (c + sqrt(float(d))) / (c - sqrt(float(d)));
m = b - f;
g = (2 * c*sqrt(float(d))) / (c + sqrt(float(d)));
q = m / g;
printf_s("Otvet %.1f \n", q);
return(0);
}
пишет ошибку. ГДЕ ОНА?)
ОтветитьУдалить#include
int main()
{
int a, b;
a = 10;
b = 5;
float c;
c=a+b;
printf("%f\n", c);
return (0);
}
Её здесь нет.
Удалить5 задание о трехзначном числе. Можно вот так?
ОтветитьУдалитьint main()
{
int a, a1, a2, a3, b, c, d;
a1 = 300;
a2 = 50;
a3 = 6;
a = 356;
b = a1 /100;
c = a2 / 10;
d = a3 / 1;
a = b + c + d;
printf("%d\n", a);
return (0);
}
Конечно нет. Должно работать так. Запускается программа, человек вводит любое число,программа выводит на экран сумму цифр этого числа.
Удалить//Квест
ОтветитьУдалить#include
#include
int main()
{
float a=10, c=6, d=100, x, y;
x=((( c-sqrt(d) )/(c+sqrt(d) ))-(( c+sqrt(d) )/( c-sqrt(d) )))/(( 2*c*sqrt(d) )/( c+sqrt(d) ));
printf("=%f\n", x);
y=(-(1/(1-(a/(1-(1/(a+1)))))));
printf("=%f\n", y);
return(0);
}
2 в одном
и так
ОтветитьУдалить//Квест 3 Универсальная считалка, ради вопроса пишу
#include
#include
int main()
{
float a, b, x;
printf("Vvedite vozvodimoe v stepen' chislo\n");
scanf("%f\n",&a);
printf("Vvedite stepen' v kotoryu hotite vozvesti\n");
scanf("%f\n",&b);
x=pow(a, b);
printf("=%f",x);
return(0);
}
Значит вопрос, почему он считывает трижды? я вроде написал 2 раза скан. читает первые 2, но третий раз так же просит число, иначе дальше процесс не идёт
//Квест 3 по условиям, x задаётся любой правда, но умножения ровно 3 и другие функции библиотеки math.h я не юзал
ОтветитьУдалить#include
#include
int main()
{
float x;
printf("Vvedite chislo 'X'\n");
scanf("%f",&x);
float a=x, y;
x=x*a*a;
x=x*a*a;
y=x*a;
printf("Rezyl'tat=%30f\n",y);
printf("Rezyl'tat v matem. vide=%16.2e\n",y);
return(0);
}
хотя переменная y тут лишняя
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалить//Квеct 5 Как заставить ввести именно 3 значное, понятия не имею как сделать, научи. Так что б другие не заработали 2 или 4 значные
ОтветитьУдалить#include
#include
int main()
{
printf("Vvedite 3znachnoe chislo\n");
float a;
scanf("%f",&a);
float x, y, z;
x=floor(a/100);
y=floor((a-100*x)/10);
z=floor(a-100*x-10*y);
float ™;
™=x+y+z;
printf("=%f\n",™);
return(0);
}
#include\\задание 3
ОтветитьУдалитьint main()
{
int x;
int y;
scanf("%d",&x);
y=x*x;
x=y*y*y;
printf("%d",x);
return(0);
}
#include "stdio.h"
ОтветитьУдалить#include "math.h"
int main ()
{double c=6,d=100,x;// для чего все обьявляют переменную а=10, которяю нужна для следующего под задания ))при этом разбивают задание на 4.1 и 4.2.
x=(((c-sqrt(d))/(c+sqrt(d)))-((c+sqrt(d))/(c-sqrt(d))))/((2*c*sqrt(d))/(c+sqrt(d)));// глаза разбегаются от скобок, нельзя ли как то упрощать?
printf("%.1f\n",x);
return 0;}
Этот комментарий был удален автором.
ОтветитьУдалитьЗадание №5 - Найти сумму трехзначного числа.
ОтветитьУдалить#include
int main()
{
float z,b,c,d;
printf("vvesti pervoe chislo ");
scanf_s("%f\n",b);
printf("vvesti vtoroe chislo ");
scanf_s("%f\n",c);
printf("vvesti tretie chislo ");
scanf_s("%f\n",d);
printf("trehznachnoe chislo %f%f%f\n",b,c,d);
z=b+c+d;
printf("Summa cifr trehznachnogo chisla %.1f",z);
return(0);
}
Не получается. Что не так?