Описание некоторых стандартов алгоритмов

1. Алгоритм вычисления суммы ряда чисел.

· Объявить переменную соответствующего типа для накопления суммы и обнулить ее: float sum=0;

· В процессе выполнения цикла при выполнении определенного условия или безусловно добавить к переменной sum+=a;

2. Алгоритм накопления произведения ряда чисел.

· Объявить переменную соответствующего типа для накопления произведения и инициализировать ее 1; при выборе типа учитывать, что произведение очень быстро растет. double pr=1;

· В процессе выполнения определенного условия или безусловно помножить переменную на очередное число pr*=b;

3. Алгоритм подсчета количества чего либо.

· Объявить переменную целого типа для подсчета количества и обнулить ее int kol=0;

· В процессе выполнения цикла при выполнении определенного условия количество увеличить на единицу kol++;

4. Алгоритм подсчета максимального из ряда чисел.

· Объявить переменную соответствующего типа для подсчета максимума. Первоначально в переменную max поместить первое число, среди которых ищем максимум max=a1;

· В процессе выполнения цикла каждое очередное число сравнить с переменно max.

if (max<aN )

max=aN;

5. Формирование в программе случайных чисел.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

для этого нужны заголовочные файлы:

#include "time.h" - для времени

#include "stdlib.h" - для случайных чисел

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Один раз в программе вызвать функцию srand(); для инициализации генератора случайных чисел.

srand((unsigned)time(NULL));

а) Формирование случайного положительного числа в диапазоне типа unsigned

int n;

n=rand();

б) Формирование случайного целого числа в диапазоне [-m;+m]

int n;

n=rand()%(2*m+1)-m;

в) Формирование случайного дробного числа в диапазоне [-m;+m]

double n;

n=(rand()%(2*m+1)-m)*0.9738179;

Работа с файлами (функции ввода вывода верхнего уровня)

При работе с файлами, файл должен быть открыт. В результате этого действия определяется указатель потока.

Указатель потока – это адрес определенного места в оперативной памяти, где хранятся сведения о файле. Указатель потока позиционируется на начало файла при попытке записи или чтения или в конец файла при дозаписи. Указатель потока автоматически смещается по файлу вслед за чтением или записью. Программист принудительно может изменить позиционирование указателей потока с помощью функции fseek(). При окончании работы с файлом, поток должен быть закрыт, вследствие чего указатель потока освобождается и может быть использован для открытия других файлов. Функции ввода вывода работают не на прямую с файлом, а через указатель потока.

fopen (открытие потока).

Функция имеет два аргумента:

· Строка константа содержит полный путь к файлу или имя строки- переменной, в которую предварительно введено имя файла.

· Строка константа, содержащая режим доступа к файлу.

“r” – режим существующего файла.

“w” – это создание нового файла или перезапись существующего файла.

“a” – дозапись в конец существующего или созданного нового файла.

“r+” – к свойствам добавляется свойство записи.

“w+” – к свойствам добавляется свойство чтения.

“a+” – к свойствам добавляется свойство чтения.

t – текстовый редактор.

b – байтовый редактор.

Пример:

Функция возвращает в качестве результата указатель потока.

1. Открыть существующий файл для чтения.

FILE*in; //in – указатель потока

in = fopen (“C:\\user\\ИУ-42\\.f.txt”,“rt”);

if (in==NULL)

{

puts (“Нет файла”);

return;

}

2. Открыть файл для записи, имя файла ввести с клавиатуры.

FILE*out; // out – указатель потока;

char str[80];

puts (“Введите имя файла”);

gets (str);

out = fopen (str, “wt”);

if (out = = NULL)

{

puts (“Поток не открыт”);

return;

}

Закрытие потока. fclose(in); где in – имя потока.

Чтение из файла или запись файла происходит порциями.

Файл можно читать: 1)посимвольно; 2)построчно (с пробелами внутри); 3) словами; 4) чтение цифр определенного типа.

Любая функция чтения в качестве результата возвращает сигнал, закончился файл или нет.

Ввод -вывод символов.

Функция ввода fgetc – в качестве аргумента требует имя потока, а прочтенный символ возвращает в качестве результата. Переменная под символ должна быть объявлена типом int.

int simv;

simv = fgetс(in);

Если обнаружен конец файла

if (simv = = EOF)

{

// ситуация конца файла.

}

Функция вывода символа

fputc (simv, out);

fputc(‘*’, out);

Ввод - вывод строк с пробелами внутри.

Функция fgets имеет три аргумента:

· Имя строки, куда производится чтение.

· Размер строки.

· Имя потока.

charstr[80];

if (fgets (str,80,in) = = NULL)

{

// ситуация конец файла.

}

fputs – имеет два аргумента:

· Строка откуда производится запись.

· Имя потока.

fputs (str, out);

fputs (“Привет”, out);

Функция ввода- вывода слов fscanf.

char str [40];

inn;

n = fscanf(in,”%s”,str);

if (n = = NULL)

{

// ситуация конца файла.

}

fprintf(out,”%s_”, str);

fprintf(out, “Привет!\n”);

Ввод -вывод чисел.

float ch;

inn;

n = fscanf(in,“%f”,&ch);

if (n = = NULL)

{

// ситуация конца файла.

}

Прямой доступ к файлу. fseek – используется для перемещения управления потока в произвольное место в файле.

Функция имеет три аргумента:

· Имя потока.

· Данные типа long, показывающие, на сколько байт будет произведено смещение.

· Равен нулю если смещение относительно начала файла, единица, если смещение относительно текущей позиции и двойке, если смещение относительно конца файла.

Функция fseek не отcлtживает смещение за пределы конца файла.

Пример:

fseek (in,-1L,1); на один символ назад относительно текущей позиции.

Если файл открыт для чтения и записи то переход от чтения к записи и, наоборот, от записи к чтению происходит через функцию fseek, даже если реальное смещение не нужно.

Наши рекомендации