通过指针访问动态数组

问题描述:

对不起,如果这是一个愚蠢的问题,但我是一个学习C++的新手程序员。通过指针访问动态数组

我有一个任务,其中输入的txt文件提供16行1-5位数字,每行最多5个数字。我们应该编写一个函数findmax在main中使用,以将每行中的最大数字输出到另一个txt文件中。

我的代码没有当前编译错误我更坚持如何在main中实际使用此函数并将其传递到outout文件。对不起,如果这真的很简单。所有的

#include <iostream> 
#include<fstream> 
using namespace std; 

int *make(int n) 
{ 
#if 0 
    int *a = new int[n]; 
#else 
    int a[n]; 
#endif 
    for(int i=0; i < n; ++i) a[i] = i; 

    return a; 
} 

int findmax(int x1,int x2,int x3,int x4, int x5) 
{ 
    for(int i=0;i<5;i++) 
    { 
     int n, temp; 
     int a[i]; 
     if(a[i]>temp) 
      temp=a[i]; 
     return temp; 
    } 

} 
int main() 
{ 
    int n; 
    int x1, x2, x3, x4, x5, y1, y2, y3, y4, y5; 
    cout << "Enter number of lines n in the input file." << endl; 
    cin >> n; 
    int *a = make(n); 

    for(int i = 0; i < n; ++i) cout << a[i] << " "; cout << endl; 

    ifstream infile; infile.open("/home/labs/lab4/lab4_input.txt"); 
    ofstream outfile; outfile.open("/home/labs/lab4/lab4_output.txt"); 
    if(!infile.is_open()) cout << "open infile failed\n"; 

    infile >> x1 >> x2 >> x3 >> x4 >> x5; 
    findmax(x1, x2, x3, x4, x5); 
    outfile << y1 << " " << y2 << " " << y3 << " " << y4 << " " << y5 << endl; 
    infile.close(); 
    outfile.close(); 
    return 0; 
} 
+2

你需要破解你的C++教科书并阅读关于数组的章节。这个网站不能教你这样的基本概念。你的程序纯粹意外编译(因为你使用错误的编译标志)。 –

+1

在你的'make'函数中,int a [n];是创建一个不是标准C++语言一部分的可变长度数组(VLA)。在互联网上搜索“C++ array dynamic memory new”。 –

+0

使用std :: vector! – 2017-10-18 20:13:38

首先,你说你应该读取和写入到文件中,但是当您使用cincout你实际上是使用标准的输入和输出。你需要研究阅读和写入C++文件。 其次,在findmax函数中,您传递了5个参数,您从不使用它们,并且还声明了一个永远不会使用的变量n。此外,make函数末尾的循环也没有意义。您需要分别读取每行,将数字存储在数组中,然后使用将该数组作为参数的函数findmax。然后在输出文件中输出该行的结果。