Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2010, 23:13   #1
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию Коментарии к программе

Есть программа, прокомментируйте пожалуйста что именно делается в каждой строчке
ЗЫ. Что смог я прокомментировал...

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

Индивидуальное задание: Числа в результирующем файле разделить знаками табуляции.

Код:
#include <stdio.h> /*Включаем описания функций стандартного ввода/вывода */
#include <conio.h>/*Включаем описания функций консольного ввода/вывода*/

int func(char *c)
{
	int i = 0; //Описание переменной i и присваивание ей нулевого значения
	int max = 0; //Описание переменной max и присваивание ей нулевого значения
	while (*c) {
		if (*c == ' ') {
			i++;
			if (i > max) max = i;
		} else i = 0;
		c++;
	}
	if (i > max) max = i;
	return max;
}

void r(char *n, char *b)
{
	FILE *f1 = fopen(n, "r");
	FILE *f2 = fopen(b, "w");
	char c[4096];
	while (!feof(f1)) {
		fgets(c, 4095, f1);
		int g = func(c);
		fprintf(f2, "%d\t", g);
		printf("%d\t", g);
	}
	fclose(f1);
	fclose(f2);
}

void main() // Главная функция программы
{
	char c[256], b[256]; // создаем 2 символьных массива
	printf("Enter input file name:"); // выводим сообщение
	gets(c); // считаем длину строки c
	printf("Enter output file name:"); // выводим сообщение
	gets(b); // считаем длину строки b
	r(c, b);
	getch(); // ждем нажатия клавишы
	return;
}

Последний раз редактировалось savra; 12.01.2010 в 23:24.
savra вне форума Ответить с цитированием
Старый 12.01.2010, 23:31   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
//Описание переменной i и присваивание ей нулевого значения
Такими темпами можно каждый оператор комментить.

Цитата:
gets(c); // считаем длину строки c
что за? О_О

Последний раз редактировалось Carbon; 12.01.2010 в 23:34.
Carbon вне форума Ответить с цитированием
Старый 12.01.2010, 23:48   #3
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию

Цитата:
Такими темпами можно каждый оператор комментить
Ну не обязательно конечно так подробно)

Цитата:
что за? О_О
Ну возможно и не правильно.... Я не знаю(
savra вне форума Ответить с цитированием
Старый 13.01.2010, 01:05   #4
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

междупрочим программа у вас не знаки табуляции вставляет между числами а подсчитываем для каждой строки максимальное количество идущих подряд пробеллов.

ну а коментарии вот

Код:
#include <stdio.h> /*Включаем описания функций стандартного ввода/вывода */
#include <conio.h>/*Включаем описания функций консольного ввода/вывода*/

int func(char *c) // функчия расчёта данных
{
	int i = 0; // Обьявление переменной i и присваивание ей нулевого значения
	int max = 0; // Обьявление переменной max и присваивание ей нулевого значения
	while (*c) { // Цикл пока не дойдём до конца строки
		if (*c == ' ') { // Проверяем в текущей позиции не пробел ли?
			i++;     // Если пробел то увеличиваем значение счёткика
			if (i > max) max = i;  // проверяем на максимальное ли это количество пробеллов в строке
                                               // и если максимальное то запоминаем новое значение количества
		} else i = 0; // Пробелы закончились, в текущей позиции другой символ. Значит сбрасываем счётчик количества пробелов в ноль
		c++;  // перемещаем указатель на следующий символ в строке
	}
	if (i > max) max = i;  // проверяем не является ли последнее количество пробелов в строке максимальным?
                               // если да. то запоминаем новое максимальное количество
	return max; // возвращаем вычисленное маскимальное количество пробелов в строке
}

void r(char *n, char *b)  // функция обработки данных
{
	FILE *f1 = fopen(n, "r"); // открываем входной файл для чтения
	FILE *f2 = fopen(b, "w"); // открываем выходной файл для записи
	char c[4096]; // обьявляем буфер для чтения строки
	while (!feof(f1)) { // цикл который будет продолжатся пока не дойдём до конца файла
		fgets(c, 4095, f1); // читаем очередную строку из файла
		int g = func(c);  // вызаваем функцию расчёта данных, и передаём ей очередную строку
		fprintf(f2, "%d\t", g); // записываем результат в выходной выйл
		printf("%d\t", g); // также выводим результат на экран
	}
	fclose(f1); // закрываем входной файл
	fclose(f2); // закрываем выходной файл
}

void main() // Главная функция программы
{
	char c[256], b[256]; // обьявляем переменные для хранения имён входного и выходного файлов
	printf("Enter input file name:"); // выводим сообщение
	gets(c); // считываем с клавиатуры имя входного фыйла
	printf("Enter output file name:"); // выводим сообщение
	gets(b); // считываем с клавиатуры имя выходного фыйла
	r(c, b); // фызаваем функцию обработки данных, и передаём её имена входного и выходного файлов
	getch(); // ждем нажатия клавиши
	return;
}
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Старый 13.01.2010, 01:32   #5
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию

спасибо большущее +1
savra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
многострочные коментарии Vano-sie72 Win Api 2 31.05.2009 21:18
Удалить коментарии Snake08 Паскаль, Turbo Pascal, PascalABC.NET 1 27.11.2008 01:41
Коментарии к проге на С для мк Raptor Помощь студентам 2 12.11.2008 00:41
Ассемблер. Факториал числа. Коментарии к программе Irwin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 03.05.2007 13:52