实验六

task3_1.cpp

#include<iostream>
#include<fstream>
#include<array>
#define N 5
int main(){
    using namespace std;
    array<int,N> x{97,98,99,100,101};
    ofstream out;
    out.open("data.txt",ios::binary);
    if(!out.is_open()){
        cout<<"fail to open data1.dat\n";
        return 1;
    }
    out.write(reinterpret_cast<char *>(&x),sizeof(x));
    out.close();
}

task3_2.cpp

#include<iostream>
#include<fstream>
#include<array>
#define N 5
int main(){
    using namespace std;
    array<char,N>x;
    ifstream in;
    in.open("data.dat1",ios::binary);
    if(!in.is_open()){
        cout<<"fail to open data1.dat\n";
        return 1;
    }
    in.read(reinterpret_cast<char *>(&x),sizeof(x));
    in.close();
    for(auto i=0;i<N;i++)
    cout<<x[i]<<",";
    cout<<"\b\b\n";
}

测试截图

char型占1个字节,而int型占4个字节

Vector.hpp

#pragma once
#include<iostream>
using namespace std;
template<typename T>
class Vector
{
    public:
        Vector(int n):size{n}
        {
            value=new T[n];        
        }
        Vector(int n,T v):size{n}
        {
            value=new T[n];
            for(int i=0;i<n;i++)
            value[i]=v;
        }
        Vector(const Vector<T> &a):size{a.size}
        {
            value=new T[size];
            for(int i=0;i<size;i++)
            value[i]=a.value[i];
        }
        T &operator[](int i)
        {
            return value[i];
        }
        int get_size() const
        {
            return size;
        }
        T &at(int index)
        {
            return value[index];
        }
        friend void output(const Vector<T> &a)
        {
            for(int i=0;i<a.size;i++)
            cout<<a.value[i]<<",";
            cout<<"\b\b\n";
        }
    private:
        int size;
        T *value;
};

 

task4.cpp

#include<iostream>
#include"vector.h"
void test(){
    using namespace std;
    int n;
    cin>>n;
    Vector<double> x1(n);
    for(auto i=0;i<n;i++)
    x1.at(i)=i*0.6;
    
    output(x1);
    
    Vector<int> x2(n,88);
    Vector<int> x3(x2);
    
    output(x2);
    output(x3);
    
    x2.at(0)=66;
    output(x2);
    
    x3[0]=666;
    output(x3);
}
int main(){
    test();
}

测试截图

task5.cpp

#include<fstream>
#include<iostream>
#include<iomanip>

using std::endl;
using std::setw;
using std::ofstream;

void output(std::ostream& out)
{
    out << "  ";
    char n = 'a';
    for (int i = 1; i <= 26; ++i, ++n) 
    {
        out << setw(2) << n;
    }
    out << endl;
    for (int i = 1; i <= 26; ++i) 
    {
        out << setw(2) << i;
        if (n == 'Z')
        {
            n = 'A';
        }
            
        else
        {
            n = i + 'A';
        }
        for (int j = 1; j <= 26; ++j, ++n) 
        {
            out << setw(2) << n;
            if (n == 'Z')
            {
                n = 'A' - 1;
            } 
        }
        out << endl;
    }
}

int main() 
{
    output(std::cout);
    ofstream out;
    out.open("cipher_key.txt");
    if (!out.is_open()) 
    {
        std::cout << "fail to open file cipher_key.txt.\n";
        return 1;
    }
    output(out);
    out.close();
}

 

测试截图

 

posted @ 2022-12-06 23:34  丁鑫铖  阅读(14)  评论(0编辑  收藏  举报