Среда, 16.07.2025, 20:13
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Си++

Лабораторная работа №5
Начнём с кода:
Code

#include <stdio.h>
#include <iostream>

int cx=0, dx=0;

void getcol (char ch)
{
  if (ch == char(10))  
  cx+=2;
  else
  if ((ch == char(9)) | (ch == char(32)))  
  cx++;
  else  
  dx++;
}

void main (void)
{
  char ch, name[50];
  FILE *in;
  using namespace std;
  using std::endl;
  wcout.imbue (locale( ".866" ));
  wcout << L"Введите имя файла для просмотра: ";
  cin >> name;
  if ((in=fopen(name, "r")) == NULL)
  {wcout << L"Файл "; printf ("%s",name); wcout << L" не открыт." << endl;}
  else
  {
  while (!feof(in))
  {
  ch=getc(in);
  if (!feof(in)) getcol (ch);
  putchar(ch);
  }
  }
  wcout << endl << L"Пустых символов - " << cx << endl
  << L"Непустых символов - " << dx << endl;

  system ("pause");
}

Данный код не совершенен, это факт.
Читаемый файл должен быть сохранён в DOS'овской кодировке, если хотите увидеть кириллицу.
Для определения "пустых" символов создана функция getcol()
Code

if ((in=fopen(name, "r")) == NULL)

Здесь мы открываем файл на чтение и заодно проверяем его на существование.
Code

while (!feof(in))
  {
  ch=getc(in);
  if (!feof(in)) getcol (ch);
  putchar(ch);
  }

В этом куске мы видим цикл, который прекратит работу в случае достижения конца файла.
В этом цикле читаем символы в первой строчке.
Во второй мы видим странную конструкцию, ещё раз проверяем на конец файла и проверяем символ на эквивалентность к "пустому".
Повторная проверка конца файла сделана потому, что цикл while по достижению конца файла сделает ещё одну итерацию. (поэтому можно рассмотреть реализацию цикла с помощью других функций do, for).
В третей строке выводим символ на экран.

Переменные cx и dx сделаны глобальными, чтобы особо не париться с ними в главной функции и в функции getcol();

Категория: Си++ | Добавил: C0demaker (27.01.2010)
Просмотров: 1192 | Рейтинг: 0.0/0
Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025