include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <conio.h>
using namespace std;
#define N 30
#define M 8
void CreatInFile(const char *InFile, double* array);
void ViewFile(const char *InFile);
void CreatOutFile(const char *InFile, const char *OutFile, double *array);
int main(int argc, char *argv[])
{
const char first_file[] ={"1.txt"};
const char second_file[]={"2.txt"};
double array[N][M];
CreatInFile(first_file, &array);
ViewFile(first_file);
CreatOutFile(first_file ,second_file, &array);
ViewFile(second_file);
system("PAUSE");
return EXIT_SUCCESS;
}
void CreatInFile(char const *File, double *array)
{
int i,j;
ofstream outFile(File);
for(i=0; i<N; i++)
{
for(j=0; j<M; j++)
{
*(array+i*j+i)=(50-rand()%100)/5.25;
outFile.width(4);
outFile<< *(array+i*j+i);
}
outFile<<endl;
}
outFile.close();
}
void ViewFile()const char *File)
{
ifstream file(File);
cout<< file.rdbuf();
file.close();
}
void CreatOutFile(const char *InFile, char const *OutFile, double *array)
{
int i, j;
double minimum = temp1= *array;
double maximum = temp2=*array;
ifstream inFile(InFile);
ofstream outFile(OutFile);
for(i=0; i<N; i++)
{
for(j=0; j<M; j++) {inFile>> *(array+i*j+i);}
}
inFile.close();
for(i=0; i<N; i++)
{
minimum=temp1;
maximum=temp2;
for(j=0; j<M; j++)
{
if(*(array+i*j+i) < minimum)
{
minimum=*(array+i*j+i);
array[0]=minimum;
}
if(*(array+i*j+i) > maximum)
{
maximum=*(array+i*j+i);
array[7]=*(array+i*j+i);
}
outFile<<*(array+i*j+i);
}
outFile<<endl;
}
outFile.close();
}
работа с файлами в с++
3адание:
В текстовом файле хранится вещественная матрица 30х8. Записать ее в другой файл таким образом, чтобы в первом столбце находились минимальные элементы строк, а в последнем – максимальные.
Я в программировании не сильно разбираюсь, поэтому и прошу помочь
Вот моя попытка:
Код:
Мне несовсем понятно, каким образом осуществляется передача двумерного массива в функцию. Попытался через указатель, передал адресс первого эл-та массива (&array) , а в вызываемой ф-ии написал (тип *array). но не получилось.
Помогите пожалста.
Код:
CreatInFile(first_file, array);
ViewFile(first_file);
CreatOutFile(first_file ,second_file, array);
ViewFile(first_file);
CreatOutFile(first_file ,second_file, array);
все... спасибо.заработало, но неправильно. не могу понять как обратится к определенному эл-ту массива в такой форме записи *(array+i*j+i) -я только общий вид запомнил, а вот принцип непонятен, объясните плиз)
Цитата: kermit
все... спасибо.заработало, но неправильно. не могу понять как обратится к определенному эл-ту массива в такой форме записи *(array+i*j+i) -я только общий вид запомнил, а вот принцип непонятен, объясните плиз)
masssiv[j] - если не понимаешь пиши так
А вообще принцип твоей записи это сдвиг указателя относительно начала массива. Почитай Подбельского "Язык С++", там это подробно описано.
разобрался уже)