Jump to content

C/C++


Dracumel
 Κοινοποίηση

Recommended Posts

Ο κώδικας μου είναι ο εξής:

#include <stdlib.h>

#include <stdio.h>

#include <malloc.h>

#include <time.h>

#include <conio.h>

 

void init_signal(double *s,unsigned long N)

{

unsigned long i;

 

printf("Intializing signal...\n");

 

for(i=0;i<N;i++){

*(s+i)=0.0;

}

}

 

void fill_signal(double *s,unsigned long N)

{

unsigned long i;

 

printf("Fill signal...\n");

srand((unsigned)time(NULL)); //use it only once

 

for(i=0;i<N;i++){

*(s+i)=rand() % 200;

}

}

 

void print_signal(double *s,unsigned long N)

{

unsigned long i;

 

printf("Printing...\n");

for(i=0;i<N;i++){

printf("%10.4f\n",*(s+i));

}

}

 

void show_menu()

{

printf("***********************\n");

printf("* 1: Intialize Signal *\n");

printf("* 2: Fill Signal *\n");

printf("* 3: Print Signal *\n");

printf("* 4: Print Average *\n");

printf("* 5: Minimum Signal *\n");

printf("* 6: Maximum Signal *\n");

printf("* 7: Save Signal *\n");

printf("* 8: Read Signal *\n");

printf("* 0: EXIT *\n");

printf("***********************\n");

}

 

double get_mean_value(double *s,unsigned long N)

{

unsigned long i;

double value=0.0;

 

for(i=0;i<N;i++){

value+=*(s+i);

}

return (value/N);

}

 

double get_min(double *s,unsigned long N)

{

unsigned long i;

double min_val=*(s+0);

 

for(i=0;i<N;i++){

if(*(s+i)<min_val)

min_val=*(s+i);

}

return min_val;

}

 

double get_max(double *s,unsigned long N)

{

unsigned long i;

double max_val=*(s+0);

 

for(i=0;i<N;i++){

if(*(s+i)>max_val)

max_val=*(s+i);

}

return max_val;

}

 

bool save_signal(char *path, double *s,unsigned long N)

{

FILE *pFile=NULL;

 

pFile=fopen("c:\\signal","wb");

 

//δεν ξέρω πως να σώσω το αρχείο fprintf(pFile);

 

//close file

fclose(pFile);

}

 

double *read_signal(char *path,unsigned long N)

{

FILE *pFile=NULL;

double *s=NULL;

 

s=new double[N];

 

pFile=fopen(path,"rb");

 

//πως θα ανοίξω το αρχείο

 

fclose(pFile);

 

return s;

}

 

void main()

{

double *p_array=NULL;

int LEN = 10;

char command;

 

show_menu(); //show the menu

 

//allocate memory for signal

p_array=(double *)malloc(sizeof(double)*LEN);

 

while (command !='0'){

 

command=getch();

switch(command){

 

case '1':

init_signal(p_array,LEN);

print_signal(p_array,LEN);

break;

case '2':

fill_signal(p_array,LEN);

print_signal(p_array,LEN);

break;

case '3':

print_signal(p_array,LEN);

break;

case '4':

get_mean_value(p_array,LEN);

printf("Printing Average...\n");

printf("%10.4f\n",get_mean_value(p_array,LEN));

break;

case '5':

get_min(p_array,LEN);

printf("Printing Minimum Signal...\n");

printf("%10.4f\n",get_min(p_array,LEN));

break;

case '6':

get_max(p_array,LEN);

printf("Printing Minimum Signal...\n");

printf("%10.4f\n",get_max(p_array,LEN));

break;

case '7':

printf("Saving signal...\n");

save_signal(p_array,LEN);

printf("Signal Saved!!!\n");

break;

case '8':

printf("Opening signal...\n");

*read_signal(p_array,LEN);

break;

default:

printf("error choice. Please try again!\n");

break;

}

}

if(p_array!=NULL)

free(p_array);

}

 

 

Έχω γράψει ότι άλλο ζητάει η άσκηση, έχω κολλήσει στο σημείο που πρέπει να σώσω το αρχείο και στο άνοιγμα του.

 

Ευχαριστώ πολύ εκ των πρωτέρων για το χρόνο που μου διαθέσατε.

Link to comment
Share on other sites

Θα βοηθούσε αν μας έλεγες τον σκοπό του προγράμματός σου και ποιος ακριβώς είναι ο σκοπός των function στις οποίες έχεις πρόβλημα
always look on the bright side of life :whistle:
Link to comment
Share on other sites

Είναι ένα πρόγραμμα που παράγει τυχαίες τιμές σημάτων,βρίσκει την μέση τιμή των σημάτων αυτών, την μέγιστη τιμή σήματος και την ελάχιστη.

 

Όμως έχω κολήσει στην καταχώρηση των τιμών των σημάτων σε ένα αρχείο (bool save_save_signal) και στο άνοιγμα του (double *read_signal) και πως θα την καλέσω από την main (βλέπε case 6, case 7

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Επισκέπτης
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Κοινοποίηση

×
×
  • Create New...