Заполнить двоичный файл целыми числами из промежутка [-3000; 8000]. Количество компонент

Заполнить двоичный файл целыми числами из промежутка [-3000; 8000]. Количество компонент файла вводится с клавиатуры. Поменять местами в файле 1-ый нечетный по значению компонент и заключительный четный.
1) Тест для работы
2) Написать обычный алгоритм
3) Код программки
4) Скрин шот
5) Заключение (какие логические оплошности)
Сделать необходимо на С++

Задать свой вопрос
1 ответ
include lt;iostreamgt;
include lt;ctimegt;
using namespace std;

int main()
    int n,m;
    FILE *fpt;
    coutlt;lt;"n = "; cingt;gt;n;
    fpt=fopen("input.dat","wb");    
    srand(time(NULL));
// запись файла
    for (int i=0; ilt;n; i++)  
       m=rand()%8000-3000; 
       coutlt;lt;mlt;lt;" ";
       fwrite(amp;m,sizeof(int),1,fpt);    
   
    coutlt;lt;endl;
    fclose(fpt);
    fpt=fopen("input.dat","rb+");
    int indf=0,indl=0,vf=0,vl=0,k=0; 
// чтение файла
    while (fread(amp;m,sizeof(int),1,fpt)!=0)
        k++;        
        if (!(m%2==0) amp;amp; (indf==0)) indf=k-1; vf=m;
        if ((!m==0) amp;amp; (m%2==0)) indl=k-1; vl=m;         
   
    coutlt;lt;"first odd = "lt;lt;vflt;lt;"   index = "lt;lt;indflt;lt;endl;
    coutlt;lt;"last even = "lt;lt;vllt;lt;"   index = "lt;lt;indllt;lt;endl; 
// размен первого нечетного и заключительного четного
    if (indfgt;0)
       fseek(fpt,sizeof(int)*indf,SEEK_SET);
       fwrite(amp;vl,sizeof(int),1,fpt);
      
    if (indlgt;0)
       fseek(fpt,sizeof(int)*indl,SEEK_SET);    
       fwrite(amp;vf,sizeof(int),1,fpt);    
      
    fclose(fpt);
    system("pause");
    return 0;


n = 6
4368 2733 1112 2620 1941 753 
first odd = 2733   index = 1
last even = 2620   index = 3

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт