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

Работа перемещающего загрузчика - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как организовать переменную ошибки? http://www.cyberforum.ru/cpp-beginners/thread548933.html
Привет Что такое вроде понятно. Например переопределяем оператор для массива, если запрашиваем индекс больше чем размер массива-то выводим сообщение об ошибке и прекращаем работу данной функции(то есть ф-ии переопред. оператора). А как организовать непонимаю. Создать класс вектор, содержащий ссылку на int, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию,...
C++ сортировка структуры в бинарном файле приветствую всех! появилась небольшая заминка у меня - немогу сравнить значения структуры, для того, чтоб отсортировать ее в бинарном файле. суть задачи: 1.Создать файл F1.dat, содержащий 8 записей следующей структуры: ФИО; номер телефона; день рождения (массив из трех чисел) 2.Написать программу, которая переписывает файл F1.dat в файл F2.dat таким образом, чтобы записи расположились в... http://www.cyberforum.ru/cpp-beginners/thread548925.html
C++ Поменять местами содержимое четных и нечетных разрядов в младшем байте
1 Найти количество чисел из диапазона от 100000 до 999999, у которых произведение первых 4 разрядов равно произведению 3 последних. Сколько среди них простых чисел. 2 Задано целое число типа WORD. Поменять местами содержимое четных и нечетных разрядов в младшем байте. Алгоритм преобразования оформить в виде функции. Исходное число и результат вывести в двоичной и десятичной форме. ...
C++ Определить является ли двумерный массив логическим квадратом
Определить является ли двумерный массив логическим квадратом, то есть суммы по всем горизонталям, вертикалям и двум диагоналям должны быть равны:cry:
C++ Напечатать все слова последовательности, которые встречаются в ней по одному разу. http://www.cyberforum.ru/cpp-beginners/thread548905.html
Дана последовательность слов. Напечатать все слова последовательности, которые встречаются в ней по одному разу. :( (P.S.ответьте пожалуйста полно...С++ знаю плохо.)
C++ Побитовые операции Задача должна быть реализована в с++ но пришлось временно писать в дельфи. суть такая: входящие число в диапазоне 0-n (8 байт) выходящие группа чисел в виде нескольких байт с помощью которых можно представить число. Пример: входящие 65535 выходящие два числа 255 и 127. Проблемма заключаеться в том что я не уверен правильно ли выходят числа а именно в каком порядке их надо вставить. Ну... подробнее

Показать сообщение отдельно
ClO_own
0 / 0 / 0
Регистрация: 15.04.2012
Сообщений: 7
15.04.2012, 14:33     Работа перемещающего загрузчика
Добрый день, необходимо разработать приложение, моделирующее работу перемещающего загрузчика. Программа считывает двоичный файл следующей структуры: N A1 A2 ... AM D0 D1 ... DK
N - кол-во ячеек с адресами данных.
A - ячейки с адресами данных.
D - ячейки с данными.
Необходимо изменить значение в области данных по адресам A1 A2 ... AM на величину S, вводимую с клавиатуры. Ячейки в файле 16 разрядные.
Проблема в следующем, данные не переписываются в файл, а лишь добавляется 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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
 
using namespace std;
 
int main()
{
    char NameOfFile[20];
    int err, i;
    unsigned short int Numb, DataCell, S, OffsetInFile;
    unsigned short int *array;
    long position;
    FILE *f1;
 
   cout<<"Enter file name: ";
    gets(NameOfFile);
    cout<<"Entered name: "<<NameOfFile<<"\n";
    if((f1 = fopen(NameOfFile, "rb+wb"))==NULL)
    {
           cout<<"Error at opening\n";
           system("pause");
           return 1;
    }
    position=ftell(f1);
    cout<<"Position in file: "<<position<<"\n";
    fread(&Numb, sizeof(unsigned short int), 1, f1);
    cout<<"Number of cells for modification:"<<Numb<<"\n";
    array = new unsigned short int [Numb];
    for(i=0; i<Numb; ++i)
    {
             fread(&array[i], sizeof(unsigned short int), 1, f1);
    }
    for(i=0; i<Numb; i++)
             cout<<array[i]<<"\n";
    position=ftell(f1);
    cout<<"Position in file: "<<position<<"\n";
    for(i=0; i<Numb; ++i)
    {
             OffsetInFile=array[i]*2;
             fseek(f1, OffsetInFile, position);
             fread(&DataCell, sizeof(unsigned short int), 1, f1);
             cout<<"DataCell="<<DataCell<<"\n";
             cout<<"Enter S: ";
             cin>>S;
             DataCell=DataCell+S;
             cout<<"DataCell="<<DataCell<<"\n";
             fseek(f1, OffsetInFile, position);
             fwrite( (void *)&DataCell, sizeof(unsigned short int), 1, f1);
    }
  fclose(f1);
    system("pause");
    return 0;
}
Добавлено через 49 минут
Прошу прощения, нашел у себя глупейшую ошибку..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru