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

Проверьте пожалуйста код - C++

Восстановить пароль Регистрация
 
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
12.06.2013, 18:47     Проверьте пожалуйста код #1
Проверьте пожалуйста решение поставленного задания. Я думаю там есть ошибки и недочеты.
Вот мой код:
header.h
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
//файл header.h
 
#ifndef HEADER_H
 
#define HEADER_H
#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h>
using namespace std;
 
#ifdef UNICODE
#define TCHAR wchar_t
#define TEXT(p) L##p
#define cin wcin
#define cout wcout
#else
#define TCHAR char
#define TEXT(p) p
#endif //UNICODE
 
#define STR 20
#define N 5
struct ZAP
{
    TCHAR symb;
    TCHAR str[STR];
    int A[N];
};
const int lenZAP=sizeof(ZAP);
 
bool isSymb (TCHAR s);
TCHAR* symbPstr (TCHAR* str,int& len);
int kolPstr (TCHAR* str);
 
TCHAR byteRemove (TCHAR symb,int* A,int len);
 
fstream& readOne (fstream& p, ZAP& zap, int n);
void writeOne (fstream& p, ZAP zap, int n);
void printOne (ZAP zap);
bool task (fstream& p);
 
#endif //HEADER_H


fun.cpp
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
//файл fun.cpp
#include "header.h"
 
bool isSymb (TCHAR s)
{
    TCHAR* p;
    p=TEXT("*#!+/&?><=-{}[|]");
    for (;*p;p++)
        if (s==*p)
            return true;
    return false;
}
 
TCHAR* symbPstr (TCHAR* str,int& len)
{
    len=0;
    for (;isSymb(*str)==0 && *str;str++);
    if (*str==0)
        return 0;
    TCHAR* p=str;
    for (;isSymb(*str);str++,len++);
    return p;
}
 
int kolPstr (TCHAR* str)
{
    int kol=0,len=0;
    for (;str=symbPstr(str,len);str+=len,kol++);
    return kol;
}
 
TCHAR byteRemove (TCHAR symb,int* A)
{
    TCHAR OLDsymb=symb;
    int maska=1;
    for (int i=0;i<N;i++)
    {
        if (A[i]%2==0)
            symb=symb^(maska<<A[i]);
        else
            symb=symb|(maska<<A[i]);
    }
    int sum=0;
    for (int i=0;i<8;i++)
        sum+=(symb>>i)&maska;
    return sum>4 ? symb : OLDsymb;
}
 
void writeOne (fstream& p, ZAP zap, int n)  
{   
    p.clear();
    if (n)  
        p.seekg((n-1)*lenZAP,ios::beg);
    p.write((char*)&zap,lenZAP);
    if (!p)
    {
        cout<<TEXT("Ошибка записи!");
        _getch();
        exit(0);
    }
}
 
fstream& readOne (fstream& p, ZAP& zap, int n)
{
    p.clear();
    if (n)
        p.seekg((n-1)*lenZAP,ios::beg);
    p.read((char*)&zap,lenZAP);
    if (!p && !p.eof())
    {
        cout<<TEXT("Ошибка чтения!");
        _getch();
        exit(0);
    }
    return p;
}
 
void printOne(ZAP zap)
{
    cout<<setw(2)<<zap.symb
        <<setw(STR)<<zap.str;
    for (int i=0;i<N;i++)
        cout<<setw(2)<<zap.A[i];
}
 
bool task (fstream& p)
{
    p.clear();
    p.seekg(0,ios::beg);
    ZAP zap;
    int flag=0;
    for (int i=1;readOne(p,zap,i);i++)
    {
        if (kolPstr(zap.str)>2)
        {
            if (zap.symb!=byteRemove(zap.symb,zap.A))
            {
                zap.symb=byteRemove(zap.symb,zap.A);
                writeOne(p,zap,i);
                flag=1;
                printOne(zap);
            }
        }
    }
    return flag;
}


main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//файл main.cpp
#include "header.h"
 
void main (void)
{
    setlocale(LC_ALL,"Russian");
    fstream p("file.bin",ios::app);
    if (p)
    {
        p.close();
        p.open("file.bin",ios::out|ios::in|ios::ate|ios::binary);
    }
    int res=task(p);
    if (res)
        cout<<TEXT("Файл изменен!");
    else
        cout<<TEXT("Файл неизменен!");
    _getch();
    p.close();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 18:47     Проверьте пожалуйста код
Посмотрите здесь:

C++ Проверьте пожалуйста код
Проверьте пожалуйста код (C++) C++
C++ Проверьте пожалуйста код
C++ Проверьте пожалуйста код на правильность !
Проверьте код пожалуйста C++
Написать код для игры НИМ. проверьте пожалуйста тот ли это код C++
C++ Проверьте код пожалуйста на цикл в С++
C++ Проверьте код пожалуйста

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

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

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