Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z alokacją tablic i drukowaniem ich.

Ostatnio zmodyfikowano 2015-11-23 11:54
Autor Wiadomość
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.
C/C++
#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 ] );
}
P-140634
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ść
 
C/C++
void generuj( Parametry * p, Sygnal * s )
{
    double t, fp, fs; // tu t domyślnie 0
    int i;
    int ilosc; // tu ilość domyślnie 0
    ilosc = p->t * p->fp;
    ilosc = t * fp; // ilosz = 0 * cos = 0
    int * x;
    x =( int * ) malloc( 100 * sizeof( int ) );
    int * y;
    y =( int * ) malloc( 100 * sizeof( int ) );
    for( i = 0; i < ilosc; i++ ) // pętla pusta
    {
        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 );
}
P-140642
« 1 »
  Strona 1 z 1