Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа с файлами в с++

29K
08 июня 2008 года
kermit
11 / / 16.01.2008
Помогите пожалста написать программу(лаба):

3адание:

В текстовом файле хранится вещественная матрица 30х8. Записать ее в другой файл таким образом, чтобы в первом столбце находились минимальные элементы строк, а в последнем – максимальные.

Я в программировании не сильно разбираюсь, поэтому и прошу помочь

Вот моя попытка:

Код:
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();  
}

Мне несовсем понятно, каким образом осуществляется передача двумерного массива в функцию. Попытался через указатель, передал адресс первого эл-та массива (&array) , а в вызываемой ф-ии написал (тип *array). но не получилось.

Помогите пожалста.
13K
08 июня 2008 года
specter
113 / / 28.09.2007
array - это уже указатель на 1й элемент массива, поэтому не используй & и *.
 
Код:
CreatInFile(first_file, array);
ViewFile(first_file);
CreatOutFile(first_file ,second_file, array);
29K
08 июня 2008 года
kermit
11 / / 16.01.2008
все... спасибо.заработало, но неправильно. не могу понять как обратится к определенному эл-ту массива в такой форме записи *(array+i*j+i) -я только общий вид запомнил, а вот принцип непонятен, объясните плиз)
307
12 июня 2008 года
Artem_3A
863 / / 11.04.2008
Цитата: kermit
все... спасибо.заработало, но неправильно. не могу понять как обратится к определенному эл-ту массива в такой форме записи *(array+i*j+i) -я только общий вид запомнил, а вот принцип непонятен, объясните плиз)



masssiv[j] - если не понимаешь пиши так
А вообще принцип твоей записи это сдвиг указателя относительно начала массива. Почитай Подбельского "Язык С++", там это подробно описано.

29K
12 июня 2008 года
kermit
11 / / 16.01.2008
разобрался уже)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог