C/c++ Программа Visual Studio

  • Автор темы Vanua2
  • Дата начала
V

Vanua2

#1
//Не очень понимаю как реализовать функцию display? Она должна выводить то, что введено с клавиатуры.Как в эту функцию передать этот динамический массив?"Message* b; b= new Message[a];
//КОД
Код:
#include <iostream>
#include <stdio.h>
using namespace std;
struct Message{
int type;
char service[20];
char reason[300];
};
Message* input_keyboard(){
int a;
cout<<"Input number for add: "<<endl;
cin >>a;
Message* b;
b= new Message[a];
for(int i=0; i<a; i++){
cout<<"Input type: ";
cin >>b[i].type;
cout<<"Input service: ";
gets(b[i].service);
cout<<"Input reason: ";
gets(b[i].reason);
};
return b;
}
Message* input_file()
{ char string[200];
FILE *f;
do{
cout<<"Input path to file: ";
gets(string);
f=fopen(string,"rb+");
if(f==NULL)
{cout<<"Error.Verify file name.";}}
while(f==NULL);
Message*input;
input=new Message;
int k=1;
fread(&input[k-1],sizeof(Message),1,f);
while(!feof(f)){
k++;
input=(Message*)realloc(input,(k+1)*sizeof(Message));
fread(&input[k-1],sizeof(Message),1,f);
input[k].type=-1;
return input;
}}
Message*[COLOR="red"]display[/COLOR](){
Message* b;
b= new Message[a];
for (int i=0;i<sizeof(new Message);i++){
cout<<"Тип повідомлення:"<<b[i].type;
cout<<"Cервіс повідомлення:"<<b[i].service;
cout<<"Причина:"<<b[i].reason;	
}}
Message* output_file(){

}

void main (){
char q;
do 
{cout<<"\n1 input from keybord, 2 input from file, e-exit: ";
cin>> q;
switch (q) {
case '1': input_keyboard(); break;
case '2': input_file (); break;
case 'e': cout<<"\nexit"; return;
default: cout<<"\nerror"; }; }
while (q!='1' && q!='2');
do 
{cout<<"\n1 output to display, 2 output to file, e-exit: ";
cin>> q;
switch (q) {
case '1': display();break;
case '2': output_file (); break;
case 'e': cout<<"\nexit"; return;
default: cout<<"\n error"; }; }
while (q!='1' && q!='2'); }