Problem z alokacją tablic i drukowaniem ich.
Ostatnio zmodyfikowano 2015-11-23 11:54
wikerson00 Temat założony przez niniejszego użytkownika |
Problem z alokacją tablic i drukowaniem ich. » 2015-11-22 23:17:10 Witam.Proszę o pomoc w alokacji tablic w funkcji generuj i wydrukowaniem ich. Myślę nad tym od tygodnia i nie mogę ruszyć z miejsca. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> #define falsz 0 #define prawda 1
typedef struct Sygnal { int * x; int * y; int ilosc; } Sygnal;
typedef struct Parametry { double A; double A0; double fs; double fp; double t; double fi; } Parametry;
void wczytaj( Parametry * s ); void wyswietl( Parametry * s ); void generuj( Parametry * p, Sygnal * s ); void zapis( Parametry * p, Sygnal * s );
int main( void ) { int menu; Parametry s = { 1, 1, 1, 1, 1, 1 }; Parametry p = { 1, 1, 1, 1, 1, 1 }; int koniec = falsz; while( koniec == falsz ) { printf( "\nMENU GLOWNE\n***********\n" ); printf( "Wybierz opcje: \n" ); printf( "0-Aby zamknac program\n" ); printf( "1-Aby wczytac dane\n" ); printf( "2-Aby wyswietlic dane\n" ); printf( "3-Aby wygenerowac funkcje sinus\n" ); printf( "4-Aby zapisac program\n" ); printf( "***********\n" ); printf( "Wybierz opcje: " ); scanf( "%d", & menu ); switch( menu ) { case 0: printf( "Poprawnie zamknieto program \n" ); koniec = prawda; return 0; case 1: printf( "\nWczytywanie danych... \n" ); wczytaj( & s ); break; case 2: printf( "\nWyswietlanie danych \n" ); wyswietl( & s ); break; case 3: printf( "\nWygenerowano funkcje sinus\n" ); generuj( & p, & s ); break; case 4: printf( "\nZapisywanie danych\n" ); zapis( & p, & s ); break; }; } system( "pause" ); return 0; }
void wczytaj( Parametry * s ) { printf( "\nPodaj amplitude A: " ); scanf( "%lf", & s->A ); printf( "Podaj amplitude zerowa A0: " ); scanf( "%lf", & s->A0 ); printf( "Podaj czestotliwosc sygnalu fs: " ); scanf( "%lf", & s->fs ); printf( "Podaj czestotliwosc poczatkowa fp: " ); scanf( "%lf", & s->fp ); printf( "Podaj czas t: " ); scanf( "%lf", & s->t ); printf( "Podaj przesuniecie fazowe fi: " ); scanf( "%lf", & s->fi ); }
void wyswietl( Parametry * s ) { printf( "Amplituda A wynosi: %lf \n", s->A ); printf( "Amplituda zerowa A0 wynosi: %lf \n", s->A0 ); printf( "Czestotliwosc sygnalu fs wynsoi: %lf \n", s->fs ); printf( "Czestotliwosc poczatkowa fp wynosi: %lf \n", s->fp ); printf( "Czas t wynsoi: %lf \n", s->t ); printf( "Przesuniecie fazowe fi wynsoi: %lf \n", s->fi ); }
void generuj( Parametry * p, Sygnal * s ) { double t, fp, fs; int i; int ilosc; ilosc = p->t * p->fp; ilosc = t * fp; int * x; x =( int * ) malloc( 100 * sizeof( int ) ); int * y; y =( int * ) malloc( 100 * sizeof( int ) ); for( i = 0; i < ilosc; i++ ) { s->x[ i ] =( double ) i / fp; s->y[ i ] = sin(( 2.0 * 3.14 * fs * i ) / fp ); printf( "%d\t%d \n", x[ i ], y[ i ] ); } free( x ); free( y ); }
void zapis( Parametry * p, Sygnal * s ) { FILE * plik; int i; char * nazwa = "plik.csv"; nazwa[ 256 ]; scanf( "%s", nazwa ); plik = fopen( nazwa, "w" ); if( plik ) { fclose( plik ); } fprintf( plik, "Podaj nazwe pliku: " ); fscanf( plik, "%s", nazwa ); fprintf( plik, "%lf\t%lf\n", s->x[ i ], s->y[ i ] ); }
|
|
darko202 |
» 2015-11-23 11:54:27 1. czy mógłbyś napisać z czym masz problem ? z przedstawionej treści trudno rozstrzygnąć z czym masz problem 2. we wskazanej procedurze generuj zwróć uwagę na t i ilość void generuj( Parametry * p, Sygnal * s ) { double t, fp, fs; int i; int ilosc; ilosc = p->t * p->fp; ilosc = t * fp; int * x; x =( int * ) malloc( 100 * sizeof( int ) ); int * y; y =( int * ) malloc( 100 * sizeof( int ) ); for( i = 0; i < ilosc; i++ ) { s->x[ i ] =( double ) i / fp; s->y[ i ] = sin(( 2.0 * 3.14 * fs * i ) / fp ); printf( "%d\t%d \n", x[ i ], y[ i ] ); } free( x ); free( y ); }
|
|
« 1 » |