Co jest nie tak (tablice, czyszczenie, sleep i inne)

0

Program aa wyświetlac obiekt (na razie * ale powinna to byc tablica znaków) poruszający się po krzywej, z czyszczeniem ekranu i funkcją zatrzymującą ekran. Co jest źle? Bardzo prosze o pomoc

kod:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <windows.h>

#define S 60
#define W 60



float wx(float t);
float wy(float t);

float t;

int t_min, t_max, x, y;
void drukuj();

char plaszczyzna[S][W];
char plaszczyzna_pusta[S][W];

int main(){




    printf("Podaj poczatek zakresu t: ");
    scanf("%d",&t_min);
    printf("Podaj koniec zakresu t: ");
    scanf("%d",&t_max);

    float step = 0.01;

    for (t=t_min; t<=t_max; t+=step){

    x=(int)round(wx(t)) + S/2;
    y=(int)round(wy(t)) + W/2;

    for(x = 0; x < S; x++){
        for(y = 0; y < W; y++){
            plaszczyzna[x][y]=' ';
        }
    }
    printf("\n");


    drukuj();

    Sleep (1000);

    wyczysc();}
}
void drukuj(){

    float step = 0.01;

    for(t=t_min; t<=t_max; t+=step){
        x=(int)round(wx(t)) + S/2;
        y=(int)round(wy(t)) + W/2;

        if (x >=0 && x < S && y >= 0 && y< W){
            plaszczyzna[x][y]='*';
            }
    }
            for (y=W-1; y>=0; y--){
                for (x=0; x<=S; x++){
                        printf("%c",plaszczyzna[x][y]);


        }
        printf("\n");
    }
}
void wyczysc(char plaszczyzna_pusta[S][W]){

    x=(int)round(wx(t)) + S/2;
    y=(int)round(wy(t)) + W/2;

    for(x = 0; x < S; x++){
        for(y = 0; y < W; y++){
            plaszczyzna[x][y]=' ';
        }
    }
    printf("\n");
        }

float wx(float t){
    return x = 16*sin(6*t);
    }

float wy(float t){
    return y = 16*sin(5*t + 1.57);
    }
0

wrzuć kod w znaczniki...

0

Zadaj jeszcze raz pytanie, a kod umieść w odpowiednich tagach, żeby wyświetlał się w sposób czytelny. Natomiast co do pytanie napisz czego się spodziewasz, bo czasami kod może być prawidłowy, ale nie dokładnie odwzorowuje to co sobie ktoś wyobrażał, że powinno być.

0

A co do sprecyzowania pytania. Sróbuję opisać co powinno się dziać. Wypełniam plaszczyzne czystymi znakami > wyświetlam wartość w posiaci '*' (generalnie to powinna być tablica znakowa, ale niestety..) > czekam, czyszcze tablice (tu: zastępuję ją pustą kopią(tą z białymi znakami)) I tak aż do konca zakresu parametru mojej krzywej

0
katharossa napisał(a):

A co do sprecyzowania pytania. Sróbuję opisać co powinno się dziać. Wypełniam plaszczyzne czystymi znakami > wyświetlam wartość w posiaci '*' (generalnie to powinna być tablica znakowa, ale niestety..) > czekam, czyszcze tablice (tu: zastępuję ją pustą kopią(tą z białymi znakami)) I tak aż do konca zakresu parametru mojej krzywej

Parafrazując Twój opis:

  • odkręcam regulator przepływu cieczy
  • podstawiam naczynie ogrzewająco-sygnalizacyjne
  • czekam aż naleje się tyle cieczy ile estymuję wykorzystać
  • zakręcam regulator przepływu cieczy
  • zamykam naczynie i stawiam w punkcie odbioru energii
  • naciskam przycisk separujący dopływ energii
  • czekam na sygnalizację

(wstawienie wody w elektrycznym czajniku)

Jak nie możesz / nie chcesz napisać treści zadania to podaj przykład wejścia i wyjścia.
A kod popraw dodając załączniki "kodu w C" (ikony nad oknem edycji postu).

1

Możesz mieć tu kilka błędów związanych z tym że mieszasz int z float.

Ale najważniejszy błąd (nie wiem czy wpływa na wynik to:

float wx(float t){
    return x = 16*sin(6*t);
}

Zamień na:

float wx(float t) {
    return 16.0 * sin(6.0 * t);
}

Pozbądź się wszystkich zmiennych definiowanych poza ciałami funkcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1