Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы (2) / Laba3 / cd
.cpp
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
const int nmax = 100;
int FileConvert(char *fname1, char *fname2);
int FileChange(char *fname2, int m, int n);
int BinOutput(char *fname);
int main(int argc, char *argv[]) {
int m, n;
if (argc < 3) {
printf("?? эRЎўяўR§-R фя яї?ў Rч!\n");
} else
if (FileConvert(argv[1], argv[2]) ){
cout<<"\nVvedite nomera zapisei\n";
cin>>m;
cin>>n;
BinOutput(argv[2]);
FileChange(argv[2], m, n);
BinOutput(argv[2]);
}
getch();
return 1;
}
int FileConvert(char *fname1, char *fname2){
float arr[2];
FILE *file1;
FILE *file2;
if ((file1 = fopen(fname1, "r")) == NULL)
{ printf("ЌҐў®§¬®¦® ®вЄалвм д ©« '%s'\n", fname1);
return 0;
}
if ((file2 = fopen(fname2, "wb")) == NULL)
{ printf("ЌҐў®§¬®¦® ®вЄалвм д ©« '%s'\n", fname2);
return 0;
}
for (int i=0; ; i++)
if (fscanf(file1," %f %f",&arr[0], &arr[1]) < 2) {
if (feof(file1)){
printf ("Љ®Ґж д ©« '%s'\n", fname1);
break;
}else
{ printf ("ЋиЁЎЄ звҐЁп Ё§ д ©« '%s'\n", fname1);
fclose(file1);
break;
}
} else {
cout<<arr[0]<<" "<< arr[1]<<"\n";
if (fwrite(arr, 2* sizeof(float), 1, file2) < 1)
{ printf ("ЋиЁЎЄ § ЇЁбЁ ў д ©« '%s'\n", fname2);
break;
}
}
cout<<"‘®§¤ ЁҐ ЎЁ а®Ј® д ©« § ўҐа襮";
fclose(file1);
fclose(file2);
return 1;
}
int FileChange(char *fname2, int m, int n){
float arr1[2];
float arr2[2];
float a;
FILE *file2;
if ((file2 = fopen(fname2, "rb+")) == NULL)
{ printf("ЌҐў®§¬®¦® ®вЄалвм д ©« '%s'\n", fname2);
return 0;
} else {
fseek(file2, 0, SEEK_END);
if (((ftell(file2)/2/sizeof(float)) < m) || ((ftell(file2) /2/sizeof(float) < n))) {
cout<<"!!!!!!!Takih zapisei net!!!!!!\n";
} else {
fseek(file2, (m-1)*2*sizeof(float), SEEK_SET);
fread(arr1, sizeof(float), 2, file2);
fseek(file2, (n-1)*2*sizeof(float), SEEK_SET);
fread(arr2, sizeof(float), 2, file2);
fseek(file2, (n-1)*2*sizeof(float), SEEK_SET);
fwrite(arr1, 2* sizeof(float), 1, file2) ;
fseek(file2, (m-1)*2*sizeof(float), SEEK_SET);
fwrite(arr2, 2* sizeof(float), 1, file2);
}
}
fclose(file2);
return 1;
}
int BinOutput(char *fname)
{ FILE *file;
int a;
int i;
float arr[2];
if ((file = fopen(fname, "rb")) == NULL)
{ printf("ЌҐў®§¬®¦® ®вЄалвм д ©« '%s'\n", fname);
return 0;
}
cout << "File "<<fname<<" ";
fseek(file, 0, SEEK_END);
a=ftell(file)/2/sizeof(float) ;
cout << a<<" zapisei\n";
for (i=0; i < a; i++) {
fseek(file, i*2*sizeof(float), SEEK_SET);
fread(arr, sizeof(float), 2, file);
cout << arr[0]<< " " <<arr[1]<<"\n";
}fclose(file);
return 1;
}