Вывести в текстовый файл вертикальную зависимость значения числа от индекса - C (СИ)
Формулировка задачи:
Есть нормированный массив arrn (числа в нем целые от 0 до 80)
нужно вывести в текстовый файл вертикальную зависимость значения числа от индекса
написал функцию но она каждый раз начальное значение следующего элемента берет как конечное предыдущего
как можно сделать чтобы столбики былы рядом?
void file()
{
int k,u;
FILE *f = fopen("Var13.txt", "w");
for(int i = 0; i < (cnt+1); i++ )
{
for (k = 0; k < (arrn[i] + 1); k++) fprintf(f,"\n");
for (u = 0; u < i+1 ; u++) fprintf(f," ");
fprintf (f,"%c",0xB0);
}
fclose(f);
};Решение задачи: «Вывести в текстовый файл вертикальную зависимость значения числа от индекса»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void Print(FILE* f, int array[], size_t count, size_t max)
{
size_t i, j;
for (i = 0; i < max; ++i)
{
for (j = 0; j < count; ++j)
{
fprintf(f, "%c", array[j] < (max - i) ? ' ' : '-');
}
fprintf(f, "\n");
}
};
int main()
{
int array[] = {2, 5, 0, 1, 6 , 8, 10};
Print(stdout, array, sizeof(array) / sizeof(*array), 10);
return 0;
}
Объяснение кода листинга программы
Вывод в консоль начинается с номера 1:
- В функции
Printпроисходит обход массиваarrayс помощью двух вложенных циклов. - Первый цикл (для
i) отвечает за горизонтальное перемещение по строке. - Второй цикл (для
j) отвечает за вертикальное перемещение по столбцу. - С помощью функции
fprintfв файлfзаписывается символ либо пробел, либо дефис. - Если значение
array[j]меньшеmax - i, то в файл записывается пробел. - Если значение
array[j]больше или равноmax - i, то в файл записывается дефис. - После завершения второго цикла, с помощью функции
fprintfв файл записывается символ новой строки\n. - После завершения первого цикла, функция
Printзавершается. - В функции
mainпроисходит вывод массиваarrayс помощью функцииPrintв файлstdout(консоль). - Размер массива
arrayопределяется какsizeof(array) / sizeof(*array)и передается в функциюPrintдля контроля количества выводимых элементов. - Число 10 передается в функцию
Printкак максимальное значение индекса для вывода. - Возвращаемое значение функции
mainравно 0, что означает успешный конец работы программы.