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

Проверка на скобки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Matrix Code http://www.cyberforum.ru/cpp-beginners/thread954297.html
При компилировании данной программы: #include <glut.h> #include <iostream> using namespace std; struct Ch { Ch(char ach = ' ', int alive = 0): ch(ach), live(alive)
C++ Общие элементы двух массивов Можете помочь с вопросом , как найти общие элементы этих массивов? Пусть есть массивы int h4 ={2,33,4,55,78,3,11,22,33,99,0,45,66,111,123,234,456,765,44,33}; int h5={9,222,233,234,345,100,111,22,81,355,55,67}; Они читаются с файла. ifstream file2("D:\\First.DAT"); //вывод из файла char line; while(!file2.eof()) {file2.getline(line,sizeof(line)); cout<<line<<endl; http://www.cyberforum.ru/cpp-beginners/thread954296.html
Не определен базовый класс C++
Есть класс C_Button, в нем определен метод buttonEvents(). Этому методу необходим метод класса C_Scenes: sceneDraw_2(). Если в C_Button включить файл с данным классом, то получится, что они включают друг друга и базовый класс не будет определен. Как это можно разрешить?
Вычислить сумму ряда C++
Нужно написать прогу на С++. Вычислить сумму ряда по формуле(в изображении)c точностью ε=10^-2,…, 10^-6. Точное значение: ln 2. Определить, как изменяется число итераций при изменении точности. Не получается, может кто сможет плиз написать? Заранее спасибо!
C++ Шаблон с "универсальной ссылкой" (C++11) http://www.cyberforum.ru/cpp-beginners/thread954257.html
Есть такой код, который не компилируется:#include <iostream> #include <vector> template<typename T> void foo(T&& t) { t = 1000; std::cout << t << std::endl; }
C++ Как записать два массива в файл ? Здравствуйте . У меня такая задача : Есть два массива. int h4 ={2,33,4,55,78,3,11,22,33,99,0,45,66,111,123,234,456,765,44,33}; int h5={9,222,233,234,345,100,111,22,81,355,55,67} Как их записать в файл ? Пробовал так : подробнее

Показать сообщение отдельно
saserlend
10 / 10 / 1
Регистрация: 25.11.2011
Сообщений: 138
14.09.2013, 15:23     Проверка на скобки
Просьба помочь разобраться в мной написанной программе. Задание и код прилагаются. У меня пока 2 проблемы.
1. void Spisok(). При записи в файл, во всех строках после первой теряется первый элемент.
2. void Task(). Не получается организовать второй цикл for для прохода по элементам строки.

В командной строке программе передается имя файла для проверки (.txt) и имя файла результатов (.txt).
Программа (консольная) проверяет каждую строку файла для проверки на расстановку скобок 4 типов ("(" и ")", "[" и "]", "{" и "}", "<" и ">"), проверка должна учесть парность и вложенность расстановки скобок (как в математических выражениях), другие символы - пропускать без обработки.
По результатам проверки формируется файл результатов, каждая строка которого соответствует строке файла для проверки, результат в строке может быть описан как - "нет ошибок", "ошибка в символе N" (N - порядковый номер символа в строке).
Программа должна выдавать отладочную информацию на экран - какой файл открыт (ошибка открытия), номер обработанной строки и результат обработки.
Работа с файлом через FILE*.
Тестирование программы - файл для проверки создается с учетом разных вариантов расстановки скобок (не менее 20 строк).

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <conio.h>
#include <sstream>
 
using namespace std;
 
 
FILE *file;
FILE *result;
typedef struct {char sList[50];} Parker;
Parker St[30];
int nStruct=1;
char FileName[40];
char FileNameR[40];
int menu();
void NewFile();
void OpenFile();
void Spisok();
void Task();
void Result();
int main()
{
while (true)
    {
        switch(menu())
        {
            case 1: NewFile();  break;
            case 2: OpenFile(); break;
            case 3: Task();     break;
            case 4: Result();   break;
            case 5: return 0;
            default: "Select the correct";
        }
    puts("Press any key to continue");  
    getch();                                                                                                //Проверить библиотеку с getch!!!!!!!!!!!!!!
    system("cls");
    }
}
 
int menu()
{
    cout << "Select\n\n";
    cout << "1. Create new file\n";
    cout << "2. Open file\n";
    cout << "3. Task\n";
    cout << "4. Result\n";
    cout << "5. Exit\n\n\n";
    int p1;
    cin >> p1;
    if(p1<1 || p1>5)
    {cout << "Select the correct\n";}
    return p1;                          //Значение возвращаемое в оператор switch для выбора пункта меню.
}
 
void NewFile() //Создание нового файла.
{
    cout << "Enter new file name\t\t\t";
    cin.ignore();
    cin.getline (FileName,sizeof(FileName),'\n');   //Ввод с клавиатуры учитывая пробелы пока не '\n'.
    file = fopen(FileName,"wb");    //Создание файла с режимом w-записи, t-текстовый файл.
    
    Spisok(); //Переход в функцию заполнения файла.
}
 
void OpenFile() //Открытие ранее созданного файла.
{
    char sLetter;
    cout << "Enter open file name\t\t\t";
    cin.ignore();
    cin.getline(FileName,sizeof(FileName), '\n');   //Ввод имени файла для открытия пока не '\n'.
    { 
    if ((file = fopen(FileName,"rt"))==NULL)    //Открытие файла в режиме r-чтения.
    { 
        cout << "\n\n" << "File exist\n";
        cout << " Create new file? Y/N\n";
        do
        {
            sLetter=cin.get();
            sLetter=toupper(sLetter);               //Преобразование к верхнему регистру (toupper)
        }
        while((sLetter != 'Y') && (sLetter != 'N'));    //Ожидание нажатия 'Y','y' или 'N','n'.
        {
            if(sLetter == 'Y')
            {
                file = fopen(FileName,"wt");    //Если нажато 'Y','y' создать новый файл с введенным ранее именем.
                Spisok();                       //Переход в функцию заполнения файла.
            }
            if(sLetter == 'N')  
            {
                OpenFile();                     //Если нажато 'N','n' вернуться в функцию открытия файла.
            }
        }
    } 
 
int n=0; Parker t;
cout << "File open\n"; 
    while(true)             //Цикл вывода ранее созданного файла на экран.
        { 
            int nDate = fread(&t, sizeof(Parker), 1, file); 
            if (nDate!=1) break; 
            St[n]=t; 
            cout << St[n].sList << "\n"; 
            nStruct++; 
        } 
fclose(file); 
    }
}
 
void Spisok() //Заполнение ранее созданного файла .
{ 
    int k;
    cout << "Enter the number of rows\t"; 
    cin >> k;                               //Ввод количества строк файла(структуры).
    for (int i=1; i<=k; i++)                //Цикл построчного ввода строк структуры.
    { 
        cout << i <<":"<<" ";
        cin.ignore();
        cin.getline(St[i].sList, 20); 
        cout << "\n";
        fwrite (&St[i], sizeof(Parker), 1, file); //Запись строк структуры в ранее созданный файл.
    }
fclose(file); 
}
 
void Result()       //Вывод результатов на экран.
{
    cout << "Enter result file name\t\t\t";
    cin >> FileNameR;
    file = fopen(FileNameR,"rb"); //Открыте файла результата в режиме r-чтения.
}
 
void Task()             //Код выполняющий задание.
{
    int c=0, i=1, n=1, k=0;
    int mass3[20];
    char mass1[]={'(','{','<','['}, mass2[]={')','}','>',']'}, mass4[20]; 
    for(St[i]; i<nStruct; i++)
        cout << "String " << i << ":\n";
        for(k=0;strlen(St[i].sList);k++)
            if(St[k].sList==&mass1[0] || St[k].sList==&mass1[1] || St[k].sList==&mass1[2] || St[k].sList==&mass1[3])
            {
                mass3[c]=k;
                strcpy(&mass4[c],St[k].sList);
                c++;
            }
            if(St[k].sList==&mass2[0] || St[k].sList==&mass2[1] || St[k].sList==&mass2[2] || St[k].sList==&mass2[3] && mass3[0]==NULL)
            {
                cout << "Error:" << k << " ";
            }
            else
            {
                if(St[k].sList==&mass2[0])
                    if(mass4[c]!=mass1[0]) {cout << "Error:" << k << endl;} else {c=c-2;}
                if(St[k].sList==&mass2[1])
                    if(mass4[c]!=mass1[1]) {cout << "Error:" << k << endl;} else {c=c-2;}
                if(St[k].sList==&mass2[2])
                    if(mass4[c]!=mass1[2]) {cout << "Error:" << k << endl;} else {c=c-2;}
                if(St[k].sList==&mass2[3])
                    if(mass4[c]!=mass1[3]) {cout << "Error:" << k << endl;} else {c=c-2;}
            }   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru