Как подготовится к сдачи ОКР по Эпштеину:
К примеру у вас задание:
Дана прога:
#include <stdio.h>
#include <conio.h>
int : i=5, j=3, k, *p=&j;
double : m=1.5e0, k1, *pp;
main() {k=*pp=(++i==j)? i++/j+7/8 : i= ++k + k-- +m;}

Дополнить эту прогу так, чтоб она выводила значения переменных i, j, k, m в файл file находящейся в директории dir на диске C: и на экран.

Ну вот:
Сначало просто переписываем на листок начало этой проги, как есть, только внимательно: на листочке могут не быть прописаны первые две или более строчек (#include.. #include..), не пропустите.
Патом пишем:
file *f - этим мы задаём файловую переменную. У всех одинаково..
f=fopen("C:\\dir\\file.txt","W") - У многих здесь могут быть по другому: вместо диска C: будет A: или директория dir на mydir или файл, ну что делать в этих случаях, я надеюсь в сами разберётесь, а остальное также. Записываем результаты вычеслений:
fprintf(f,"i=%i j=%i k=%k m=%lf",i, j, k, m) Тут вам надо не запутатсяв переменных и их типах:
Если переменная типа Int (напремер J, которая равна 3 (тип смотреть всерху)) то пишем J=%i, а если типа double, то (например M) M=%lf
Теперь следует закрыть файловую переменную:
Fclose(f) - Тоже у всех одинаково!
Это мы выводили данные в файл, теперь на экран:
printf("i=%i j=%i k=%i m=%lf",i, j, k, m) Тут почти также, как чуть выше, только за двумя изменениями, сами найдите.
На этом построение программы заканчивается, тока не забудте поставить в конце значёк } Эта скобка должна быть только одна в проге, и соотв одна вот такая: {
Прога примет вид:
#include <stdio.h>
#include <conio.h>
int : i=5, j=3, k, *p=&j;
double : m=1.5e0, k1, *pp;
main()
{
k=*pp=(++i==j)? i++/j+7/8 : i= ++k + k-- +m;
file *f;
f=fopen("C:\\dir\\file.txt","W");
fprintf(f,"i=%i j=%i k=%k m=%lf",i, j, k, m);
Fclose(f);
printf("i=%i j=%i k=%i m=%lf",i, j, k, m); }


Вычесления (без них параша):
Ну попробую объяснить на таком примере:
k1=k=(i+j++)- *p + --m
Все вычесления будут записаны в переменные k1 и k
Собственно вычесления (по шагам, подробно):
i+j - это я думаю понятно 5+3, но у j стоит ++, это значит, шо после всех вычеслений прибавляем еденицу к j, но вычесляем до прибавления!!
*p - это т.н. Адрес, если присмотрется, то выше написано: *p=&j - просто это значит, что p = j, вот и всё (j=3 и тогда p=3)
--m - Сначала отнимаем еденицу, потом производим вычесления..!!
Обратите внииание и запомните:
  • Если ++ или -- стоит после переменной (как в первом случае), то сначала вычесляем всю строку, а потом прибавляем/отнимаем еденицу и на следующей строке переменная считается как "изменённая"
  • Если ++ или -- стоит перед переменной (как во втором случае), то сначала прибавляем/отнимаем еденицу, а потом вычесляем всю строку, с изменённой переменной
    Наверное вам не понятно, что такое 1.5e0 вот: 1.5 * 10 в степени 0 (т.е. 1.5*100 или 1.5*1 итого просто 1.5)
    Например 2e2 значит 2*102 или 2*100 = 200
    Ну вот и настоящие вычесления:
    (5+3)-3+0.5 итого: 8-2.5 = 5.5, но это не всё:
    Ответы:
    k1=5.5
    k=5.5
    i=5
    j=4
    m=0.5
    Но на листочек значение всех переменных переписывать не надо, только тех, которых просят!

    Вопросы в форум, если ещё не поздно, а если спешите, то на сотовый званькайте..

    Удачи, без неё тоже параша.:)
  • Сайт создан в системе uCoz