• Forum

  • Regulamin

  • Szukaj

  • Użytkownicy

  • Kalendarz

  • Pomoc

  • Kontakt

  •  
Aktualny czas: 29-03-2024, 9:07 Witaj! (LogowanieRejestracja)
Witamy na WebElite.pl - Forum Informatycznym!

Aktualnie przeglądasz forum jako Gość, przez co Twój dostęp jest w pewnym stopniu ograniczony. Zarejestruj się a uzyskasz dostęp do publikacji postów oraz wielu innych ciekawych funkcji niedostępnych dla niezarejestrowanych użytkowników. Nie zastanawiaj się dłużej i dołącz do naszej społeczności już dziś!

Pozdrawiamy i życzymy mile spędzonego czasu na forum.
facebooktwitteryoutube
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
[C/Visual]Problem z wysypywaniem się programu
Autor Wiadomość
Argothon Offline
Newbie
*

Liczba postów: 1
Reputacja: 0
Post: #1
[C/Visual]Problem z wysypywaniem się programu
Cytat:#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <locale.h>

int main(void)
{
FILE *SygnalCzysty;
FILE *Zaklocenia;
FILE *SygnalZaszumiony;
double amplituda,makszaklocenie,czestotliwosc,prawdopodobienstwozaklocenia,wartoscsygnalu,czas=0,probki,wartosczaklocenia,znak;
int i=0; /* jedynie zmienna pomocnicza do pętli*/
const int zasieglosowania=101; /*żeby otrzymać liczbę z przedziału 0-100*/
char nazwaSygnalCzysty[20];
char nazwaZaklocenia[20];
char nazwaSygnalZaszumiony[20];
setlocale(LC_ALL, "Polish");
printf("Program ma na celu wygenerowanie oraz zapis do pliku:\n");
printf("Sygnału czystego,\n zakłóceń o podanej amplitudzie,\nsygnału z nałożonymi zakłóceniami.\n");
printf("Podaj nazwę pliku, do którego zostanie zapisany przebieg sygnału czystego:\n");
scanf_s("%s",nazwaSygnalCzysty);
printf("Podaj nazwę pliku, do którego zostanie zapisany przebieg zakłóceń:\n");
scanf_s("%s",nazwaZaklocenia);
printf("Podaj nazwę pliku, do którego zostanie zapisany przebieg sygnału zaszumionego:\n");
scanf_s("%s",nazwaSygnalZaszumiony);
printf("Podaj częstotliwość:\n");
scanf_s ("%lf", &czestotliwosc);
if (czestotliwosc<=0)
{
printf ("Częstotliwość nie może być ujemna\n");
return EXIT_FAILURE;
}
printf("Podaj amplitudę\n");
scanf("%lf", &amplituda);
printf("Podaj amplitudę zakłócenia\n");
scanf("%lf", &makszaklocenie);
printf("Podaj prawdopodobieństwo zakłócenia\n");
scanf("%lf", &prawdopodobienstwozaklocenia);
printf("Podaj ilość próbek: ");
scanf("%lf", &probki);
if((fopen_s(&SygnalCzysty, nazwaSygnalCzysty, "w")) != 0) /* tryb w, ponieważ zapis dokonuje się dopiero po wyjściu z pętli */
{
printf("Nie mogę otworzyć pliku %s do zapisu!\n", nazwaSygnalCzysty);
return EXIT_FAILURE;
}
fprintf(SygnalCzysty, "Sygnał Czysty\n");
if ((fopen_s(&Zaklocenia, nazwaZaklocenia, "w")) != 0)
{
printf("Nie mogę otworzyć pliku %s do zapisu!\n", nazwaZaklocenia);
return EXIT_FAILURE;
}
fprintf(Zaklocenia, "Zakłócenie o amplitudzie %lf i prawdopodobieństwie %lf\n", makszaklocenie,prawdopodobienstwozaklocenia);
if ((fopen_s(&SygnalZaszumiony, nazwaSygnalZaszumiony, "w")) != 0)
{
printf("Nie mogę otworzyć pliku %s do zapisu!\n", nazwaSygnalZaszumiony);
return EXIT_FAILURE;
}
fprintf(SygnalZaszumiony, "Sygnał zaszumiony\n");
srand((unsigned int)time(NULL));
while(czas<=2*(1/czestotliwosc))
{
czas=2*(1/czestotliwosc)*(i/probki);
if(rand()%zasieglosowania<prawdopodobienstwozaklocenia)
{
wartosczaklocenia=fmod(rand(), makszaklocenie);
znak=rand()%2;
if(znak==0)
{
wartosczaklocenia = wartosczaklocenia;
}
else
{
wartosczaklocenia = -wartosczaklocenia;
}
}
else
{
wartosczaklocenia=0;
}

fprintf (Zaklocenia, "%lf;%lf\n", czas,wartosczaklocenia);


if(czas<=(1/(2*czestotliwosc))) /*przebieg trójkątny rozbity na 4 przedziały*/
{
wartoscsygnalu = (2*amplituda*czestotliwosc*czas);
fprintf (SygnalCzysty, "%lf;%lf\n", czas,wartoscsygnalu);
}
else if(czas>(1/(2*czestotliwosc)) && czas<=(1/czestotliwosc))
{
wartoscsygnalu = -(2*amplituda*czestotliwosc*czas)+2*amplituda;
fprintf (SygnalCzysty, "%lf;%lf\n", czas,wartoscsygnalu);
}
else if(czas>1/czestotliwosc && czas<3/(2*czestotliwosc))
{
wartoscsygnalu = (2*amplituda*czestotliwosc*czas)-2*amplituda;
fprintf (SygnalCzysty, "%lf;%lf\n", czas,wartoscsygnalu);
}
else
{
wartoscsygnalu = -(2*amplituda*czestotliwosc*czas)+4*amplituda;
fprintf (SygnalCzysty, "%lf;%lf\n", czas, wartoscsygnalu);
}

wartoscsygnalu=wartoscsygnalu+wartosczaklocenia;
fprintf (SygnalZaszumiony, "%lf;%lf\n", czas,wartoscsygnalu);
i++;
}
fclose (SygnalCzysty);
fclose (Zaklocenia);
fclose (SygnalZaszumiony);
return EXIT_SUCCESS;
}

Witam.
Nie mam bladego pojęcia dlaczego program się wysypuje. Proszę bardzo o pomoc. Program ma na celu generowanie przebiegu trójkątnego dla podanych danych oraz zakłóceń. Po wpisaniu danych program się wysypuje pokazując "corrupted nazwaSygnalZaszumiony".

Z góry dziękuję za wszelką pomoc.
17-10-2011, 14:36
Odpowiedz cytując ten post
jarex_67 Offline
Znawca
***

Liczba postów: 90
Reputacja: 0
Post: #2
RE: [C/Visual]Problem z wysypywaniem się programu
Spróbuj tutaj jest fajne szkolenie http://geek-on.pl Smile
29-08-2017, 18:42
Odpowiedz cytując ten post


Skocz do: