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

Операции с файлами, запись массива в файл в обратном порядке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Практика\структура http://www.cyberforum.ru/cpp-beginners/thread276105.html
Если не сложно напиши код именно по моему заданию: Ввести сведения о результатах экзаменационной сессии группы по следующей структур: ФИО, предмет(три предмета), оценка. Вывести: а) всех кто получил двойки; б) все сведения для указанной фамилии. Примечание: *использовать меню; *данные вывести в виде таблицы.
C++ Реализация стека в динамическом массиве Условие такое:Разработать шаблон класса для работы со стеком, реализованным в динамическом массиве. Для разрабатываемого шаблона обязательно определите: a. конструктор по умолчанию; b. конструктор копирования; c. деструктор; d. оператор присваивания; e. вставку элемента в стек ; f. удаление элемента из стека ; g. просмотр элемента в вершине стека без его удаления, h. просмотр всех... http://www.cyberforum.ru/cpp-beginners/thread276097.html
Считывание с новой строки C++
Вот код: #include <string> #include <fstream> #include<iostream> #include<sstream> #include <conio.h> //#include<ostream> using namespace std;
C++ Дано число n...
Помогите сделать,пожалуйста Пусть дано число n.Выяснить, сколько положительных элементов содержит матрица a, если a=sin(i+j/2) Delpchi
C++ Из турбо паскаля в С++ перевести код - стек http://www.cyberforum.ru/cpp-beginners/thread276080.html
Задача написана на Турбо паскале. Проблема состоит в том, что она должны быть на С++. К сожалению, на данный момент это не представляется возможным сделать самой. Очень прошу помочь. Использовать стек для решения следующей задачи. В текстовом файле записана без ошибок формула следующего вида: <формула>:=<цифра>|M(<формула>,<формула>)| m(<формула>,<формула>) <цифра>:=0|1|2|3|4|5|6|7|8|9 ...
C++ Одномерные массивы. Помогите пожалуйста! На завтра нужна прога в С++, а у меня ничего не выходит=(.Известны данные о численности населения (в млн жителей) и площади (в млн кв.км) 10 государств. Определить общую численность государств, чья площадь превышает 5 000 000 кв.км. подробнее

Показать сообщение отдельно
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
14.04.2011, 02:12     Операции с файлами, запись массива в файл в обратном порядке
Собственно сабж!

задача. Компоненты типизированного файла - целые числа. поменять местами первый компонент с последним, второй - с предпоследним и т.д. Поменянный записать в новый файл

Вот мой код! Собственно где ошибка?! Все отлично в принципе... в новый файл пишеться массив... но когда пытаюсь вывести файл output выводит -34753475(бред) 19 -50 -16 17, хотя должен вывести 19 -50 -16 17 -9 , тоесть массив из первого файла, но в обратном порядке. Я предполагаю ошибку в for(int i = size; i > 0; i--) {....}!
i>=0 ? не помогло вроде.

что не так делаю парни и дамы?

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
// Компоненты типизированного файла - целые числа.
// поменять местами первый компонент с последним, второй - с предпоследним и т.д.
// Поменянный записать в новый файл
 
#include "stdafx.h"
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
 
 
int random();
 
int main(void) {
 
 
    int buffer, *array, size = 0, i;
    /*
    FILE *file; file = fopen("input.dat", "wb");
    for (int i  = 0; i < 5; i++) { 
        buffer = random();
        fwrite(&buffer, sizeof(int), 1, file); 
    }*/
    
    FILE *file; file = fopen("input.dat", "rb");
    while(fread(&buffer, sizeof(int), 1, file)) {
        size++;
    }
 
    array = (int*) malloc(size*sizeof(int));
 
    fseek(file, 0, SEEK_SET);
    
    i = 0;
    while(fread(&buffer, sizeof(int), 1, file)) {
        array[i] = buffer;
        i++;
    }
    fclose(file);
    /*
    for(int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    */
 
    printf("press key to open new file\n"); getch();
    FILE *newfile; newfile = fopen("output.dat", "wb");
 
    printf("press key to write array to a new file\n"); getch();
    for (i = size; i > 0; i--) {
        buffer = array[i];
        fwrite(&buffer, sizeof(int), 1, newfile);
    }
    fclose(newfile);
 
    printf("press key to free memory\n"); getch();
    free(array);
    
    return 0;
    
}
 
int random() {
    int rand_dig;
    return rand_dig =   rand() % 100-50 ;
}
Добавлено через 2 минуты
i = size -1 мб?

Добавлено через 1 час 5 минут
any ideas?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru