Форум программистов, компьютерный форум CyberForum.ru

Задача: Посчитать логические строки - C++

Восстановить пароль Регистрация
 
arreke
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 13
24.09.2012, 05:58     Задача: Посчитать логические строки #1
Описание

Одна компания использует непонятный для других людей язык программирования, вот особенности этого языка:
  1. Есть 2 вида символьных строк, первый - с использованием одинарных кавычек, второй - с использованием двойных ковычек. Строка с одинарными кавычками может содержать в себе двойные кавычки, строка с двойными кавычками также может содержать в себе одинарные кавычки. Строка не может разделяться, в строке не могут быть кавычки одного типа.
  2. Есть 2 вида комментариев: Line comment с использованием символа @, и Block comment который заключается в двойные скобки (()).
  3. Block comment не имеет вложений, весь текст в Block comment игнорируется.
  4. Комментарий не может находиться в символьной строке.
  5. Все Line comment и кавычки находящиеся в Block comment не имеют смысла.
  6. Кавычки находящиеся в комментарии не имеют смысла
  7. В скрипте не должно быть символа "#", даже в символьной строке или в комментарии.
  8. Любая точка с запятой не находящаяся в комментарии или в символьной строке означает конец логической строки.

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

Input

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

Output

Для незаконченной символьной строки напечатать "Unterminated string in line n.", где n должно быть числом.

Если программа содержит незаконченный Block comment, напечатать "Unterminated block comment at end of program."

После информации об ошибке, напечатать "Program x contains y logical lines and z physical lines.", где x, y, z должны быть соответственными числами.

Например, Input:
((Block comment)↵
"string";('another string;');@line comment↵
##↵

Output:
Program 1 contains 2 logical lines and 2 physical lines.↵


Мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int phLines=0, lgLines;
char Lines[100][256];
 
int check (int sum)
{
  lgLines = 0;
  
  // Посчитать колличество lgLines и т.д.
  
  printf("Program %d contains %d logical lines and %d physical lines.\n", sum, lgLines, phLines);
  return 0;
}
 
int main() 
{
  int sum=0;
  char str[256];
  
  do {
    scanf(" %[^\n]s", str);
    if (strcmp("##", str)==0) continue;
    if (strcmp("#", str)==0) { check(++sum); phLines=0; }
    else sprintf(Lines[phLines++], "%s", str);
  } while (strcmp("##", str)!=0);
 
  printf("\n");
  system("PAUSE");
  return 0;  
}
Застрял. Подскажите, пожалуйста, какой примерно должен быть алгоритм? На что ориентироваться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 05:58     Задача: Посчитать логические строки
Посмотрите здесь:

Как посчитать число букв в каждом слове строки C++
C++ Задача логические функции (составить функцию, которая определяет верно ли что сумма цифр числа четное число)
C++ Не могу посчитать сумму максимальных элементов каждой строки
Сформировать двумерный массив и посчитать сумму элементов каждой строки C++
Посчитать Si для элементов каждой строки по формуле C++
Посчитать длину введенной пользователем строки C++
Строки: посчитать количество символов без пробелов C++
Арифмометр: посчитать значение выражения, заданного в виде строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru