Последние новости

YoungCoder теперь и на Stepikе. Записывайтесь: https://vk.cc/75rISy

Чтобы записаться на курс, необходимо зарегистрироваться на Степике: https://vk.cc/75rIC4

Это моя личная ссылка-приглашение на Stepik для вас. Регистрируясь по этой ссылке, записываясь на курсы и решая задачи, Вы помогаете автору данного сайта принять участие в конкурсе платформы Stepik! Подробности конкурса здесь: https://vk.cc/75rKuS

воскресенье, 23 октября 2011 г.

Занятие 4. Арифметические выражения и стандартные математические функции.Приоритет операций.Инкремент. Декремент.Уроки программирования для чайников.Язык Си.



Добрый день, уважаемые пользователи.
Как всем, наверное, известно, компьютеры изначально  придумывались, чтобы производить на них вычисления. И это было их основное назначение. Именно этим мы сегодня и займемся, в сегодняшнем уроке программирования для начинающих. Т.е. затронем такую важную тему как арифметические выражения и операторы в языке программирования Си. Поговорим об операторе присваивания, приоритете операций, операциях инкремента и декремента. Итак, приступим.

Прочитайте улучшенную версию этого урока "Математика в Си".

В новой версии:

  • Дополнительные материалы
  • Задачи с автоматической проверкой решения
  • Исследовательские задачи

Оператор присваивания. Арифметические выражения.
В языке программирования Си, существуют различные операторы.  Самым главным является оператор присваивания, который обозначается символом =. Он используется в любой программе, кроме простейших, типа нашей первой программы, выводящей на экран 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;
к прибавить 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) – возводит в степень 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 градусов. Тоже самое относится и к значениям возращаемыми обратными тригонометрическими функциями (acosasin, …). Они возвращает значения в радианах.
Приоритет операций.
Всем наверно с детства знакома задачка с подковыркой, когда опоненту говорят сколько будет два плюс два умножить на два. Многие забывают что в математике сначала надо умножать, а потом только прибавлять, и потому ответ не 8, а 6.
В языке программирования Си, тоже есть определенны порядок выполнения арифметических операций. Он очень похож на тот, который мы используем в обычной жизни.

  1. Операции в скобках
  2. Функции (типа sqrtcos и другие)
  3. Умножение, деление, остаток от деления (слева направо, как в обычной жизни)
  4. Сложение вычитание (слева направо, как в обычной жизни)
Для примера рассмотрим следующее выражение записанное на языке Си:
Приоритет арифметических операций

Над каждым действием вы видите каким оно выполняется по счету.
Для изменения порядка выполнения операций используются круглые скобки. Например, если записать:
Листинг 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
  • Дано трехзначное число. Найдите сумму его цифр.

Задачи с автоматической проверкой решения из новой версии курса.
Задачи на основные арифметические операции.




Если Вам понравился этот урок, расскажите о нем вашим друзьям. В этом  Вам могут помочь кнопки основных социальных сетей, расположенные ниже. Вам остается всего лишь кликнуть по любой из них.

195 комментариев :

  1. //Задание1
    #include "stdio.h"
    int main(void)
    {
    int a;
    printf("%d\n",a);
    return(0);
    }
    Насколько я понял именно это требовалось сделать. Но прога не запустилась, матюкнулась и закрылась.

    ОтветитьУдалить
  2. //Задание 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. //Задание3
    #include "stdio.h"
    int main(void)
    {
    int a=2,b=2;
    a*=b,a*=b,a*=a;
    printf("%d\n",a);
    return(0);
    }

    ОтветитьУдалить
  4. в ответе первого выражения ответ далеко не 0,5,а -0,020502.
    Считал лично сам на листочке.

    ОтветитьУдалить
  5. Если поменять с=не 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);
    }

    ОтветитьУдалить
  6. #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

    ОтветитьУдалить
  7. #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);
    }

    ОтветитьУдалить
  8. Добрый вечер, Камиль.
    1)Понятно. В принципе это нормальная реакция. Если прочитать сообщение об ошибке, там написано, что не инициализирована переменная. Если рядом с кодом поставить напротив вывода точку останова, и нажать F5, то можно убедиться что в переменной записано.
    2)Да, всё хорошо.
    3)Неправильно. У нас одна переменная, а вы используете две. Кстати, когда выполните это задание, подумайте какую максимальную степень числа x можно получить используя три знака умножения.
    4.1)Да, всё верно, это я случайно ошибся. Исправлю. Единственное, что не стоило объявлять переменную a, она всё равно не используется.
    4.2) Все правильно, опять у меня ошибка.
    5)Хитро, но не правильно. =) На вход поступает обычное трехзначное число, а не записанное по цифрам, через пробел. Подумайте, как тут можно использовать свойство операции деления целых чисел, и получение остатка от деления

    ОтветитьУдалить
    Ответы
    1. #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, там Камиль сам ошибся вроде...

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
  9. В третьем задании максимальную степень которую можно получить-это 8.
    //Задание 3v2
    #include "stdio.h"
    int main(void)
    {
    int a=2,x;
    x=(a*=a)*(a*a);

    printf("%d\n",x);
    return(0);

    }

    ОтветитьУдалить
  10. 8 правильный ответ, но программа опять немного не такая. Не стоит объявлять еще одну переменную.
    int x=2;
    Всё, больше ничего. Итоговое число тоже должно храниться в этой х.

    ОтветитьУдалить
  11. #include "stdio.h"
    int main(void)
    {
    int x=2;
    x=(x*=x)*(x*x);
    printf("%d\n",x);

    return(0);

    }

    ОтветитьУдалить
  12. Засчитано.Кстати, довольно оригинально. Использован даже приоритет операций. =)

    ОтветитьУдалить
  13. #include "stdio.h"
    int main(void)
    {
    int x;
    scanf("%d",&x);
    x=(x*=x)*(x*x);
    printf("%d\n",x);

    return(0);
    Не обязательно использовать конкертнное число...

    ОтветитьУдалить
  14. =D Конечно необязательно. Но не распыляйтесь, это заданиг уже засчитано.

    ОтветитьУдалить
  15. Дано трехзначное число. Найдите сумму его цифр.
    Голову уже сломал, вообще не пойму как сделать.

    ОтветитьУдалить
  16. Пробовал через getchar, что бы он каждый символ отдельно так сказать определил и сложить их потом, но в итоге ничего не вышло.

    ОтветитьУдалить
  17. Я уже давал же подсказку: "Подумайте, как тут можно использовать свойство операции деления целых чисел, и получение остатка от деления."

    ОтветитьУдалить
  18. Да никак. Может для определенного числа можно, но составить алгоритм для всех чисел я думаю с помощью деления и получения остатка нельзя...

    ОтветитьУдалить
  19. Всегда, когда есть общая задача, следует рассмотреть частный случай, и потом пытаться распространить на все оставшиеся.
    Пусть a=342;
    Как получить в переменной c1 первую цифру этого числа, т.е. тройку?

    ОтветитьУдалить
  20. #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);

    }

    ОтветитьУдалить
  21. На следующем уроке в случаем не if и else будете разбирать?

    ОтветитьУдалить
  22. Последнее задание
    #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;
    }

    ОтветитьУдалить
  23. {
    int a;
    cin>>a;
    a=(a/100)+(a%10)+((a/10)%10);
    cout<<a;

    }

    ОтветитьУдалить
    Ответы
    1. Это С++. Задания надо решать на чистом Си. =)

      Удалить
  24. в шестом 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);
    }

    ОтветитьУдалить
    Ответы
    1. Если ответ совпал, значит верно.

      Удалить
  25. 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);
    }

    ОтветитьУдалить
    Ответы
    1. если ответ совпадает, то все верно.

      Удалить
  26. //последнее задание
    #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;
    }

    ОтветитьУдалить
    Ответы
    1. Это С++. Даже смотреть не буду. =)

      Удалить
  27. Задание 3

    #include
    int main()
    {
    int x;

    x=8;
    x*=x*x;
    x*=x;

    printf("%d\n", x);

    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Хорошо. Засчитано. =)

      Удалить
    2. Попробовал этот способ, но при вводе 10 программа выдает неправильный результат.

      Удалить
  28. Задание № 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);
    }

    ОтветитьУдалить
    Ответы
    1. совпадает ответ? Если да, то все верно. =)

      Удалить
  29. Задание № 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);
    }

    ОтветитьУдалить
    Ответы
    1. Если ответ совпадает, значит правильно. Совпадает?

      Удалить
  30. Задание № 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);
    }

    ОтветитьУдалить
  31. #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;
    }

    ОтветитьУдалить
    Ответы
    1. В вижуал студии не выполнится, там нет функции sqrt(int), там только float. Даже если заменить на float, ответ не такой получается. Ну и непонятно зачем объявляется otv2.

      Удалить
  32. У вас в этом уроке опечатка, вы пишите - "Оператор инкремента (--) уменьшает значение переменной на единицу."
    А как я понял то это (--) декремент.
    Вы не написали в этом уроке какой тип данных нужно использовать для стандартной библиотеки математических функций 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;
    }

    ОтветитьУдалить
    Ответы
    1. Добрый вечер Виктор.
      Спасибо за внимательность. Да, конечно же это декремент. Моя ошибка признаюсь. Исправил уже.
      А вот насчет математических функций вы не правы. Посмотрите, как даны прототипы этих функций:
      double sqrt(double x)
      Как понимать эту запись описано в третьем занятии. Дополнительных слов я считаю не нужно.

      Задания проверять не буду уже. Ориентируйтесь на образцовые решения и на решения других участников.
      Если что-то будет непонятно, с радостью отвечу.

      Удалить
  33. 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);
    }

    ОтветитьУдалить
    Ответы
    1. Работает. А теперь скажите, зачем сначала объявлять переменные типа float, а потом приводить их к int? Это что за шаманские танцы с бубном?

      И кавычки не одинарные, а двойные.
      #include "stdio.h"

      Удалить
  34. А какую команду нужно ввести, чтобы после вывода результата консоль оставалсь открытой и я мог вводить цифры дальше , т.е считать как на калькуляторе?

    ОтветитьУдалить
    Ответы
    1. Это нельзя сделать одной командой. Это можно организовать с помощь цикла, например.=)

      Удалить
  35. Здравствуйте! Спасибо большое за ваши уроки! Долго искал с чего начать обучение, ваш блог, на мой взляд, лучшее из всего что я нашёл. Во всём разобрался, вот только с третьим заданием справился не правильно. Подсмотрел в комментах верное решение, но не понял одного в этой строке: "x=(x*=x)*(x*x);". Почему (x*=x) даёт х в четвёртой степени? Можно подробнее этот момент?

    ОтветитьУдалить
    Ответы
    1. Тут дело в приоритете операций.
      (x*=x) дает х во второй степени, а не в 4. Но теперь получается у нас в х сохранено значение х в квадрате.
      То есть следующее действие в скобках х*х дает нам х в четвертой степени.
      ну и уже x^2 *x^4 получаем х^6.
      Теперь понятнее? =)

      Удалить
  36. Получилось 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);
    }

    ОтветитьУдалить
  37. #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;
    }

    ОтветитьУдалить
    Ответы
    1. ну считает правильно конечно. Только не стоило так заморачиваться с константами и т.д. Но так как формат не оговорен в условии, пускай будет так. =)

      Удалить
  38. Этот комментарий был удален автором.

    ОтветитьУдалить
  39. 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);
    }

    ОтветитьУдалить
    Ответы
    1. Ольга, вы умница. В такой день занимались полезным делом. Вечером посмотрю ваши задачи.

      Удалить
  40. 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);
    }

    ОтветитьУдалить
  41. 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);
    }

    ОтветитьУдалить
  42. насчет 5-го задания вообще не могу врубиться(
    дано, например, 234=х
    а=234/100=2.34
    b=234/10-2.34*10=0
    с=аналогично нулю.
    поясните подробнее пожалуйста.

    ОтветитьУдалить
    Ответы
    1. Вы просто невнимательно прочитали урок.=)
      " Если вы были внимательны, то заметили, наверное, что при делении получился неправильный ответ. 7 поделить на 2 равняется 3.5.
      Это одна из особенностей языка программирования Си.
      При делении целочисленной переменной на целочисленную переменную остаток от деления теряется. Поэтому 7/2 получилось 3."

      То есть, в вашем случае при делении 234/100 получится 2.

      Удалить
  43. Решение последней задачи:

    #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);
    }

    ОтветитьУдалить
  44. Здравствуйте.Спасибо Вам за уроки.очень интерестно.вот мой вариант последней задачи
    #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);
    }

    ОтветитьУдалить
  45. Здравствуйте!
    А. Компилятор не жалуется на отсутствие "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) вместо курсора какой-то чёрный всепоглощающий прямоугольник. То есть я ошибаюсь где-то в начале строки, начинаю исправлять ошибку - а эта штуковина тем временем кушает стоящие впереди неё буковки (и приходится переписывать всю строчку). Можно ли как-нибудь настроить курсор?

    ОтветитьУдалить
    Ответы
    1. Конечно, это означает, что Вы случайно нажали на клавиатуре кнопку -"insert", нажмите её повторно!

      Удалить
  46. Зачем прописывать функцию 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);
    }

    ОтветитьУдалить
    Ответы
    1. Анонимный3 июля 2013 г., 17:38

      Не понял вопроса. Уточните пожалуйста.

      Удалить
    2. Ну выше, есть пару работ где используется
      double sqrt(double x)
      А в моей же работе, не используется, но все работает, так зачем же она ?

      Удалить
    3. Анонимный4 июля 2013 г., 03:41

      Я тут уже написал ответ, но потом решил, что вам полезнее будет самому с эти разобраться, а я лишь подскажу.
      Давайте с другого конца зайдем. Что по вашему должна делать такая строчка? Что она означает?

      Удалить
    4. Аналогично, даже не задумался над тем прописывать или нет строку. Видно не понял её сути!=(

      Удалить
  47. #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);
    }

    ОтветитьУдалить
    Ответы
    1. Анонимный4 июля 2013 г., 03:53

      Хорошо. Мне нравится. =))

      Удалить
    2. Анонимный14 июля 2013 г., 16:02

      а можно узнать откуда взялось -'0' ?

      Удалить
    3. А подумать? А попробовать посмотреть, что будет если этот нуль убрать?

      Подсказка: таблица ASCII.

      Удалить
  48. Здравствуйте! Подскажите, почему результат -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);
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день! У Вас немного нарушен порядок выполнения действий, как раз из-за неправильно расстановки скобок. Принцип здесь простой. Необходимо точно установить порядок действий. В программировании, лучше больше скобок поставить и быть точно уверенным, что действие будет выполнено так, как нужно. Я сам так всегда делаю. И проверяю, на маленьких примерах. Можно разбить на последовательность действий, потихоньку добавляя действие за действием, контролируя на каждом шаге результат.

      Удалить
    2. Спасибо за внимание, буду пробовать:)

      Удалить
  49. а уравнение можно решить? вот оно
    #include
    int main()
    {
    int a;
    56=55+a;
    printf("otvet %d",a);
    return (0);
    }
    ? буду благодарен за ответ

    ОтветитьУдалить
  50. Спасибо большое за уроки.
    Всё сделал кроме 5, ибо я не знал что делать. Посмотрел ответы, не понял, погуглил, прозрел(почти).
    Спс+)

    ОтветитьУдалить
  51. Здравствуйте! Подскажите пожалуйста в чем у меня ошибка. Сравнивал с правильными ответами ничего не нашел, а программа выдает 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);
    }

    ОтветитьУдалить
    Ответы
    1. Как минимум, у вас неуравновешены скобки. Открывающих на одну больше, чем закрывающих. )

      Удалить
  52. Не пойму почему ответы выходят х=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);
    }

    ОтветитьУдалить
    Ответы
    1. В смысле почему ответы выходят? Если все вычисления произвести, то получится такой ответ. )))

      Удалить
  53. #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);
    }

    ОтветитьУдалить
  54. Доброго времени суток!

    #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;

    }

    Сначала никак не могла понять, но потом вспомнила, что при делении целочисленной переменной остаток теряется.
    Спасибо!

    ОтветитьУдалить
  55. #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);
    }

    ОтветитьУдалить
    Ответы
    1. Если компилируется и ответы совпадают, значит все правильно. ))

      Удалить
  56. #include
    int main (void)
    {
    int x;
    printf("d \n",x);
    }

    После этого нажал Отладка - Шаг с заходом, установил стрелку на 5-ю строку и там написано, что значение х = -711787564. Это ведь и есть тот мусор?

    ОтветитьУдалить
  57. //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);
    }
    Подскажите в чем ошибка((

    ОтветитьУдалить
    Ответы
    1. Я думаю компилятор вам лучше меня подскажет. =)))

      Вы пытаетесь вывести переменную с, которой нет в вашей программе. )

      Удалить
  58. #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. Хорошо. А теперь тоже самое, использую одну переменную )))

      Удалить
  59. Задание 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???Любопытно...

    ОтветитьУдалить
    Ответы
    1. Пятое мне больше всего понравилось. Может быть добавлю его в образцовые. )))

      В четвертом предполагалось, что вы запишете это все без использования дополнительной переменной. )))

      Удалить
    2. Cпасибо)
      На счет переменной Z...было лень писать sqrt постоянно))
      А вот если еще и X лишняя,то у меня только есть идея впихнуть формулу в printf("")...

      Удалить
  60. #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);
    }

    ОтветитьУдалить
    Ответы
    1. Нет, вру. Не хорошо. Слишком много переменных. А если бы у вас было двадцатизначное число? )))

      Удалить
  61. //я вижу последнюю задачу вот такой
    //нахождение суммы чисел в 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);
    }

    ОтветитьУдалить
    Ответы
    1. Хорошо, только не изящно. ))) Посмотрите, там выше есть решение Егора, оно красивое. )))

      Удалить
  62. 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);
    }

    ОтветитьУдалить
  63. Задание 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);
    }
    как то так...

    ОтветитьУдалить
    Ответы
    1. В 5 задаче число вводится с клавиатуры.

      В третьем задании нельзя использовать дополнительные переменные.

      В четвертом, вы схитрили как и Егор Рябопашко.


      Удалить
    2. Задание 3

      #include
      int main()
      {
      int x;
      x=4;
      x=x*x*x;
      x=x*x;
      printf(" %i\n", x);
      return(0);
      }

      Удалить
  64. почему то не отобразились stdio.h и math.h, но оне там есть...

    ОтветитьУдалить
    Ответы
    1. Вместо угловых скобок берите и в двойные кавычки. =)) Я где-то писал об этом. )

      Удалить
  65. #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;
    }

    ОтветитьУдалить
  66. Задание первое
    Я вообще не понял но сделал по вашему примеру
    #include
    int main(void)
    {
    int a;
    a=10-2;
    a=a-2;
    printf("%d \n",a);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Если не поняли, то стоит еще раз прочитать и разобраться.

      Удалить
  67. Задание третье
    #include
    int main(void)
    {
    int a=4,b=5;
    a*=b,a*=b,a*=a;
    printf("%d \n",a);
    return(0);
    }

    ОтветитьУдалить
  68. И по возможности объясните мне что я сделал в третьем задании

    ОтветитьУдалить
    Ответы
    1. Нет уж, это вы должно объяснить мне, что вы сделали в третьем задании.)

      Удалить
  69. 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);
    }

    ОтветитьУдалить
  70. у меня получается в 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);
    }
    не знаю что делать

    ОтветитьУдалить
  71. 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);
    }

    ОтветитьУдалить
    Ответы
    1. Сначала давайте разберемся.

      b(int)%=4;

      что вы хотите сделать вот этой строчкой? =)

      Удалить
  72. #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);
    }

    ОтветитьУдалить
  73. Задание №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;
    }

    ОтветитьУдалить
    Ответы
    1. Это что? =) Если последняя программа,то неправильно.

      Удалить
  74. Уважаемый KaDeaT,
    В этом уроке вы ничего не пишите о синтаксисе математических функций, как их использовать в программе как это было в предыдущих уроках.

    ОтветитьУдалить
  75. Мне тоже не совсем понятно, как использовать математические функции. Я хотела сделать третье задание путем х^2+x^2+x^2. Но программа выдает ошибку еще при первом возведении. Подскажите пожалуйста, что не так.
    #include
    int main (void){
    int x=2;
    x= (double x, double 2);
    printf("%d", x);
    return (0); }

    ОтветитьУдалить
  76. #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);


    }

    Никак не пойму, почему не получается. Вроде, все скобки и знаки на месте. Не могли бы вы указать на ошибку?

    ОтветитьУдалить
    Ответы
    1. Первая ошибка, это вот эта строчка
      double sqrt(double x);

      Зачем она здесь записана по Вашему? ))

      НУ а вторая, основная вот тут
      printf("%f \n"), x;

      Думаю найдете самостоятельно. )

      Удалить
  77. Здравствуйте! Это Александр.

    Вот пример решения задачи №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);
    }

    ОтветитьУдалить
    Ответы
    1. Первая хорошо. А во второй, что это за выкрутасы такие?
      x=sqrt(d);
      d=x;

      Во-первых можно было сделать вот так
      d = sqrt(d);

      А во-вторых, нельзя было использовать дополнительные штучки. Это вы уже схитрили, как и многие выше.

      Удалить
  78. вот арифметические действия и сокращения.

    //урок
    #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);
    }

    ОтветитьУдалить
  79. Расчет двух выражений. задание №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);
    }

    ОтветитьУдалить
  80. Вот исправил задание где икс в шестую степень возводим. С делал с одной переменной.
    //икс в степени шесть
    #include
    int main(void)
    {
    int x;
    x=2;
    x*=x;
    x=x*=(x*x);
    printf("bgt %d",x);
    return(0);
    }

    ОтветитьУдалить
  81. последнее задание, применил остаток от деления и деление.
    //сумма чисел трех значного числа.
    #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);
    }

    ОтветитьУдалить
  82. Задание №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);
    }

    ОтветитьУдалить
  83. Спасибо! Очень интересные уроки.
    Задание про сумму

    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);

    ОтветитьУдалить
  84. //Задание последнее, некоторые библиотеки остались с с предыдущих заданий
    #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);
    }

    ОтветитьУдалить
    Ответы
    1. Не предполагалось использование циклов в этом задании.

      Удалить
  85. Этот комментарий был удален автором.

    ОтветитьУдалить
  86. #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);
    }

    ОтветитьУдалить
  87. Этот комментарий был удален автором.

    ОтветитьУдалить
  88. #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);
    }

    ОтветитьУдалить
  89. #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);
    }

    ОтветитьУдалить
  90. #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);
    }

    ОтветитьУдалить
    Ответы
    1. Этот комментарий был удален автором.

      Удалить
    2. #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);
      }

      Удалить
  91. Я сделал неправильно, но хотел бы узнать, есть ли возможность исправить так написанную программу? Считанные 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);
    }

    ОтветитьУдалить
  92. задание номер 3
    Кадет, можно вопрос? Когда будем оконные приложения делать?))))
    #include
    #include
    int main()
    {
    int a=2;
    a*=a*a;
    printf("%d\n",a);
    system("pause"); // Команда задержки экрана
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Конечно можно. Никогда. По-крайней мере я не планирую об этом писать. Хотя все еще может измениться.

      Удалить
  93. "Дано число x. Вычислите число x6 при помощи трех операций умножения." А ведь я так и не поняла пока в комментарии не заглянула, что вместо х надо подставить любое натуральное число. И куда я только этот "х" не вставляла.

    ОтветитьУдалить
  94. Подскажите, такой вариант 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);
    }

    ОтветитьУдалить
    Ответы
    1. Вполне приемлем для проверки одного действия. Хотя есть одна лишняя строчка, точнее бесполезная. Её можно удалить и ничего не изменится. Знаете какая?

      Удалить
    2. Честно говоря нет, вроде при удалении строчек информация меняется на экране.

      Удалить
    3. Вторая строчка b=3; не нужна. В этот момент в переменной b и так сохранено значение 3.

      Удалить
  95. Здраствуйте. Подскажите по 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. так происходит решение у данного условия ?

    ОтветитьУдалить
    Ответы
    1. x=(x*=x)*(x*x);

      Тут два выражения в скобках у них самый высокий приоритет.
      Когда выполняется (x*=x) то в x записывается новое значение, и все последующие действия происходят уже с этим новым значением.
      Т.е. если это двойка, то в этой скобке получается, что в х сохраняется значение четыре (х=х*2=4). Следующая скобка
      (х*х) уже будет считаться, как (4*4) = (16).
      Ну и последнее умножение 4*16=64.
      Но вообще, хотя я ранее принял такое решение, но сейчас считаю, что это плохой код. Я не уверен, что порядок выполнения операций во всех компиляторах будет одинаковый. Если сначала посчитается правая скобка, то будет другое значение. Так лучше не писать.

      Удалить
  96. моё решение 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 пробовать )

    ОтветитьУдалить
    Ответы
    1. Если ответы совпали, то всё правильно. )

      Удалить
  97. а вот и 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);
    }

    ОтветитьУдалить
  98. Здравствйте. Проверте пожалуйста задание №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);
    }

    ОтветитьУдалить
    Ответы
    1. Не совсем правильно. Эти числа:
      f=439000;
      float c=64.3,d=0.624,e=25.07;

      тоже нужно было считывать с клавиатуры.)

      Удалить
  99. Добрый день.
    Прежде всего хочу поблагодарить Вас за уроки.
    Нашел ошибку в уроке, мелочь конечно, но может запутать.
    "Особое внимание уделите тригонометрическим функциям. Так как они принимают значения не в градусах, а в радианах. Например, cos(60) не будет равен 0.5 потому, что мы посчитали синус угла 60 радиан..."
    С уважением, Алексей

    ОтветитьУдалить
  100. Проверите?
    #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);
    }

    ОтветитьУдалить
  101. #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

    ОтветитьУдалить
  102. #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);

    }

    пытался решать по этой теме, с разными операторами и арифметическими выражениями, но наверное легче спрыгнуть с моста

    ОтветитьУдалить
  103. и знаете что самое забавное?
    она работает.........................

    ОтветитьУдалить
  104. Уважаемый 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);}


    ОтветитьУдалить
    Ответы
    1. Добрый вечер, Михаил.
      Функция printf ждет от вас строки в указанном формате. Он у вас A=%d\n. Значит, вы должны ввести A=2 и нажать энтер. Если вы вводите просто 2, то компьютер не понимает что вы от него хотите. Сначала просите читать строку в определенном формате, а потом сами же этот формат и нарушаете.

      Удалить
    2. Ок, спасибо Кирилл! И еще проблема такого характера, когда начинаю новую программу. Компилятор ине выдает ошибку "Declaration terminated incorrectly" вот, а когда я открываю ранее сохраненный листинг и записываю в него слово в слово все с не рабочего,то все работает.

      Удалить
  105. // Директивы препроессора
    #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;
    }

    ОтветитьУдалить
  106. Задание 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);
    }

    ОтветитьУдалить
  107. пишет ошибку. ГДЕ ОНА?)
    #include
    int main()
    {
    int a, b;
    a = 10;
    b = 5;
    float c;
    c=a+b;
    printf("%f\n", c);
    return (0);
    }

    ОтветитьУдалить
  108. 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);
    }

    ОтветитьУдалить
    Ответы
    1. Конечно нет. Должно работать так. Запускается программа, человек вводит любое число,программа выводит на экран сумму цифр этого числа.

      Удалить
  109. //Квест
    #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 в одном

    ОтветитьУдалить
  110. и так
    //Квест 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, но третий раз так же просит число, иначе дальше процесс не идёт

    ОтветитьУдалить
  111. //Квест 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);
    }

    ОтветитьУдалить
  112. Этот комментарий был удален автором.

    ОтветитьУдалить
  113. //Кве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);
    }

    ОтветитьУдалить
  114. #include\\задание 3
    int main()
    {
    int x;
    int y;
    scanf("%d",&x);
    y=x*x;
    x=y*y*y;
    printf("%d",x);
    return(0);
    }

    ОтветитьУдалить
  115. #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;}

    ОтветитьУдалить
  116. Этот комментарий был удален автором.

    ОтветитьУдалить
  117. Задание №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);
    }

    Не получается. Что не так?

    ОтветитьУдалить