Заполнить двоичный файл целыми числами из промежутка [-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
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
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов