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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Валентина1
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 5
#1

Программа "файлы" - C++

18.10.2009, 18:45. Просмотров 1472. Ответов 8
Метки нет (Все метки)

Всем привет, мне по программированию задали задачку а я не понимаю как решить(
Если кто нибудь решит буду благодарна)
Вот такая вот : Создать двоичный файл и записать в него n целых чисел. Массив создать из исходного файла. Внести в него числа, расположенные в файле между минимальным и максимальным элементами.
Нуно код программы в С++
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2009, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа "файлы" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Программа, которая "разносит" файлы - C++
Суть такова: в папке имеются 6 файлов(имя может быть любым) с расширениями .aa, .bb, .cc, .dd, .ee, .gg, их надо перенести в папки 11, 22,...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Что означает "Программа "[4872] laba!.exe: Машинный код" завершилась с кодом 3 (0x3)."? - C++
при запуске кода компилятор пишет "Программа " laba!!!!!!.exe: Машинный код" завершилась с кодом 3 (0x3)." и появляется окошечко с ошибкой....

Как сделать, так чтобы i и j можно было вводить самому "i" И "j" в цикле, есть программа - C++
#include <iostream> using namespace std; int main() {int a=0,b=0; int i=0; cout<<"Vvedite i="<<endl; cin>>i; ...

что дальше? (программа вводит информацию из ведомости и печатает фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими) - C++
Ведомость о результатах зимней сессии содержит информацию: фамилия и инициалы студента, номер группы, оценки с 3-х предметов: а)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
18.10.2009, 18:54 #2
Это слишком сложная программа. Я не в состоянии ее реализовать...
Тебе эту программу нужно на курсовую, что ли ?
0
Валентина1
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 5
18.10.2009, 20:53  [ТС] #3
Врешь мне сказали она легкая))ну позязя)))
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
19.10.2009, 01:17 #4
Цитата Сообщение от Валентина1 Посмотреть сообщение
Врешь мне сказали она легкая))ну позязя)))
Ладно, написал - за красивое ник... Мою знакомую так зовут..

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
// Создать двоичный файл и записать в него n целых чисел.
// Массив создать из исходного файла. Внести в него числа, расположенные
// в файле между минимальным и максимальным элементами.
 
#include <iostream>
#include <fstream>
#include <vector>
 
class myClass
{
public:
    myClass(): min(1000000), max(0) {}
    ~myClass() { numbers.clear(); }
 
    bool cFile(char* directory, int randMax, int n);
    void vMass();
    bool cMass(char*);
private:
    std::vector <int> numbers;
    int min, max, tmp, itm;
    std::ofstream oFile;
    std::ifstream iFile;
    char* dir;
};
 
bool myClass::cFile(char* directory, int randMax, int n)
{
    strcpy(dir, directory);
    oFile.open(dir, std::ios::binary);
 
    if(oFile.fail())
        return false;
 
    for(int i = 0; i < n; i++)
    {
        tmp = rand()%randMax;
        tmp < min ? (min = tmp, itm = i) : (tmp > max ? (max = tmp, itm = i) : NULL);
        oFile << tmp << " ";
    }
 
    oFile.close();
    return true;
}
 
bool myClass::cMass(char* dr)
{
    int j = 0;
    strcpy(dir, dr);
    iFile.open(dir, std::ios::binary);
 
    if(!iFile.good())
        return false;
 
    for(int i = 0; i < itm; i++)
    {
        iFile >> tmp;
        if(tmp == min || tmp == max)
        {
            if(i < itm)
            {
                j = i;
                break;
            }
        }
    }
 
    for(; j < itm - 1; j++)
    {
        iFile >> tmp;
        numbers.push_back(tmp);
    }
 
    iFile.close();
    return true;
}
 
void myClass::vMass()
{
    std::cout << "------------------------\n";
    for(size_t i = 0; i < numbers.size(); i++)
    {
        std::cout << numbers[i] << " ";
        if(i % 5 == 0)
            std::cout << "\n";
    }
    std::cout << "\n------------------------\n";
}
 
int main()
{
    myClass one;
    char dir[128] = "\0";
 
    std::cout << "Creating file. Please, writen directory:\n> ";
    std::cin  >> dir;
 
    if(!one.cFile(dir, 1000, 25))
    {
        std::cerr << "ERROR: Cannot create file for dir \'" << dir << "\'\n";
        return -1;
    }
    
    if(!one.cMass(dir))
    {
        std::cerr << "ERROR: Cannot open file for dir \'" << dir << "\'\n";
        return -1;
    }
 
    one.vMass();
    return 0;
}
Результат работы программы:

Creating file. Please, writen directory:
> c:\\cpp\\bnn.bin
------------------------
467
334 500 169 724 478
358 962 464 705 145
281 827 961 491
------------------------
Для продолжения нажмите любую клавишу . . .
0
Валентина1
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 5
19.10.2009, 12:41  [ТС] #5
Пасипки)))
0
inter
9702 / 2457 / 47
Регистрация: 06.03.2009
Сообщений: 8,503
30.10.2009, 01:57 #6
Цитата Сообщение от vano219 Посмотреть сообщение
Могу написать в 10 короче и проще)))
что мешает?
0
Валентина1
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 5
05.12.2009, 20:23  [ТС] #7
тока проверила, сайт еле вспомнила

Добавлено через 1 минуту
В результате получилось не то что у тебя,Search.. В общем выдет такую надпись:
<<Необработанное исключение в "0x1026f6d7 (msvcr90d.dll)" в "TRAIN.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".>>
И далее нужно выбрать либо прервать, либо продолжить, при нажатии продолжить появляется то же самое, при выборе прервать добавляет исходный файл и в нем огромный код :

Assembler
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
 page    ,132
        title   strcat - concatenate (append) one string to another
;***
;strcat.asm - contains strcat() and strcpy() routines
;
;       Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
;       STRCAT concatenates (appends) a copy of the source string to the
;       end of the destination string, returning the destination string.
;
;*******************************************************************************
 
        .xlist
        include cruntime.inc
        .list
 
 
page
;***
;char *strcat(dst, src) - concatenate (append) one string to another
;
;Purpose:
;       Concatenates src onto the end of dest.  Assumes enough
;       space in dest.
;
;       Algorithm:
;       char * strcat (char * dst, char * src)
;       {
;           char * cp = dst;
;
;           while( *cp )
;                   ++cp;           /* Find end of dst */
;           while( *cp++ = *src++ )
;                   ;               /* Copy src to end of dst */
;           return( dst );
;       }
;
;Entry:
;       char *dst - string to which "src" is to be appended
;       const char *src - string to be appended to the end of "dst"
;
;Exit:
;       The address of "dst" in EAX
;
;Uses:
;       EAX, ECX
;
;Exceptions:
;
;*******************************************************************************
 
page
;***
;char *strcpy(dst, src) - copy one string over another
;
;Purpose:
;       Copies the string src into the spot specified by
;       dest; assumes enough room.
;
;       Algorithm:
;       char * strcpy (char * dst, char * src)
;       {
;           char * cp = dst;
;
;           while( *cp++ = *src++ )
;                   ;               /* Copy src over dst */
;           return( dst );
;       }
;
;Entry:
;       char * dst - string over which "src" is to be copied
;       const char * src - string to be copied over "dst"
;
;Exit:
;       The address of "dst" in EAX
;
;Uses:
;       EAX, ECX
;
;Exceptions:
;*******************************************************************************
 
 
        CODESEG
 
%       public  strcat, strcpy      ; make both functions available
strcpy  proc \
        dst:ptr byte, \
        src:ptr byte
 
        OPTION PROLOGUE:NONE, EPILOGUE:NONE
 
        push    edi                 ; preserve edi
        mov     edi,[esp+8]         ; edi points to dest string
        jmp     short copy_start
 
strcpy  endp
 
        align   16
 
strcat  proc \
        dst:ptr byte, \
        src:ptr byte
 
        OPTION PROLOGUE:NONE, EPILOGUE:NONE
 
        .FPO    ( 0, 2, 0, 0, 0, 0 )
 
        mov     ecx,[esp+4]         ; ecx -> dest string
        push    edi                 ; preserve edi
        test    ecx,3               ; test if string is aligned on 32 bits
        je      short find_end_of_dest_string_loop
 
dest_misaligned:                    ; simple byte loop until string is aligned
        mov     al,byte ptr [ecx]
        add     ecx,1
        test    al,al
        je      short start_byte_3
        test    ecx,3
        jne     short dest_misaligned
 
        align   4
 
find_end_of_dest_string_loop:
        mov     eax,dword ptr [ecx] ; read 4 bytes
        mov     edx,7efefeffh
        add     edx,eax
        xor     eax,-1
        xor     eax,edx
        add     ecx,4
        test    eax,81010100h
        je      short find_end_of_dest_string_loop
        ; found zero byte in the loop
        mov     eax,[ecx - 4]
        test    al,al               ; is it byte 0
        je      short start_byte_0
        test    ah,ah               ; is it byte 1
        je      short start_byte_1
        test    eax,00ff0000h       ; is it byte 2
        je      short start_byte_2
        test    eax,0ff000000h      ; is it byte 3
        je      short start_byte_3
        jmp     short find_end_of_dest_string_loop
                                    ; taken if bits 24-30 are clear and bit
                                    ; 31 is set
start_byte_3:
        lea     edi,[ecx - 1]
        jmp     short copy_start
start_byte_2:
        lea     edi,[ecx - 2]
        jmp     short copy_start
start_byte_1:
        lea     edi,[ecx - 3]
        jmp     short copy_start
start_byte_0:
        lea     edi,[ecx - 4]
;       jmp     short copy_start
 
;       edi points to the end of dest string.
copy_start::
        mov     ecx,[esp+0ch]       ; ecx -> sorc string
        test    ecx,3               ; test if string is aligned on 32 bits
        je      short main_loop_entrance
 
src_misaligned:                     ; simple byte loop until string is aligned
        mov     dl,byte ptr [ecx]
        add     ecx,1
        test    dl,dl
        je      short byte_0
        mov     [edi],dl
        add     edi,1
        test    ecx,3
        jne     short src_misaligned
        jmp     short main_loop_entrance
 
main_loop:                          ; edx contains first dword of sorc string
        mov     [edi],edx           ; store one more dword
        add     edi,4               ; kick dest pointer
main_loop_entrance:
        mov     edx,7efefeffh
        mov     eax,dword ptr [ecx] ; read 4 bytes
 
        add     edx,eax
        xor     eax,-1
 
        xor     eax,edx
        mov     edx,[ecx]           ; it's in cache now
 
        add     ecx,4               ; kick dest pointer
        test    eax,81010100h
 
        je      short main_loop
        ; found zero byte in the loop
; main_loop_end:
        test    dl,dl               ; is it byte 0
        je      short byte_0
        test    dh,dh               ; is it byte 1
        je      short byte_1
        test    edx,00ff0000h       ; is it byte 2
        je      short byte_2
        test    edx,0ff000000h      ; is it byte 3
        je      short byte_3
        jmp     short main_loop     ; taken if bits 24-30 are clear and bit
                                    ; 31 is set
byte_3:
        mov     [edi],edx
        mov     eax,[esp+8]         ; return in eax pointer to dest string
        pop     edi
        ret
byte_2:
        mov     [edi],dx
        mov     eax,[esp+8]         ; return in eax pointer to dest string
        mov     byte ptr [edi+2],0
        pop     edi
        ret
byte_1:
        mov     [edi],dx
        mov     eax,[esp+8]         ; return in eax pointer to dest string
        pop     edi
        ret
byte_0:
        mov     [edi],dl
        mov     eax,[esp+8]         ; return in eax pointer to dest string
        pop     edi
        ret
 
strcat  endp
 
        end
Добавлено через 1 минуту
Хотела спросить, а правда легче ее никак написать нельзя?
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
05.12.2009, 22:51 #8
Валентина1, это дизасм кода, лучше скажи в какой строке кода из 4 поста это вылетело и при каких обстоятельствах
0
Валентина1
0 / 0 / 0
Регистрация: 18.10.2009
Сообщений: 5
06.12.2009, 14:23  [ТС] #9
ммм, я ненаю теперь он как тока компилирует сразу выдает ошибку(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2009, 14:23
Привет! Вот еще темы с ответами:

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.12.2009, 14:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru