Dwa obiekty poruszajace sie po tabeli.

0

Witam,
Mam nastepujacy problem. Otoz musze napisac program, ktory przedstawia dwa elementy poruszajce sie po tabeli. Czy nizej opisane prototypy funkcji, przedstawiaja parametry ruchu 1 i parametry ruchu2? Czy funkcja rysuj tabele wypelni mi ja spacjami, M lub B? Wiem brakuje funkcji main, oraz komendy typu sleep(aby pokazywac etapowo zmiany zachodzace na tablicy).

#include <stdio.h>
#define WYSOKOSC 20
#define SZEROKOSC 80
#define PI 3.14
char tablica[SZEROKOSC][WYSOKOSC];
int ruchM(int *wspolrzednaM, int *nowawspolrzednaM);
int ruchB(int *wspolrzednaB, int *nowawspolrzednaB);
int rysujtabele (int *wspolrzednaM, int *nowawspolrzednaM, int *pole,
    int *nowawspolrzednaB, int *wspolrzednaB);
int *parametr;
int *wspolrzednaM, *wspolrzednaB;
*wspolrzednaM = &tablica[41][10];
*wspolrzednaB = &tablica[39][10];
int main(void){
}
int ruchM(int *wspolrzednaM, int *nowawspolrzednaM){
    int nowawspolrzedna; 
    nowawspolrzedna = wspolrzednaM + *(*(tablica + *parametr) - *parametr);
    nowawspolrzedna = nowawspolrzednaM;
    return nowawspolrzednaM;
}
int ruchB(int *wspolrzednaB, int *nowawspolrzednaB){
    int nowawspolrzedna;
    nowawspolrzedna = wspolrzednaB + *(*(tablica - *parametr) + *parametr);
    nowawspolrzedna = nowawspolrzednaB;
    return nowawspolrzednaB;
}
int rysujtabele(int *wspolrzednaM, int *nowawspolrzednaM, int *pole,
    int *nowawspolrzednaB, int *wspolrzednaB){
        nowawspolrzednaM = wspolrzednaM, nowawspolrzednaB = wspolrzednaB;
        for (pole = &tablica[0][0]; pole <= &tablica[SZEROKOSC][WYSOKOSC]; 
            pole++)
                if (*pole != *wspolrzednaM) putchar (' ');
                else putchar ('M');
                if (*pole != *wspolrzednaB) putchar (' ');
                else putchar ('B');
                                if(wspolrzednaM != wspolrzednaB) continue;
                                else printf("koniec\n")
    return 0;
}
0

Nie rozumiem tego:

#define WYSOKOSC 20
#define SZEROKOSC 80
char tablica[SZEROKOSC][WYSOKOSC];

int *wspolrzednaM, *wspolrzednaB;
*wspolrzednaM = &tablica[41][10];
*wspolrzednaB = &tablica[39][10];

Coś tu nie gra.
Zastanów się co chcesz zrobić?

Proponuję przenieść :

*wspolrzednaM = &tablica[41][10];
*wspolrzednaB = &tablica[39][10];

do funkcji głownej i poprawić wg tego:

*wspolrzednaM = tablica[41][10];
*wspolrzednaB = tablica[39][10];

jeżeli o to chodzi.

reszcie przyjrzę się później.

0

Jako iż nie widzę opcji edytuj, może dodam komentarze do poszczególnych czynności co chciałem uzyskać, a co mi się udało. Program się kompiluje, chcę po prostu wiedzieć czy dzięki tym prototypom funkcji uzyskam zamierzony efekt.

 #include <stdio.h>
#define WYSOKOSC 20
#define SZEROKOSC 80
#define PI 3.14
char tablica[SZEROKOSC][WYSOKOSC];
int ruchM(int *wspolrzednaM, int *nowawspolrzednaM);
int ruchB(int *wspolrzednaB, int *nowawspolrzednaB);
int rysujtabele (int *wspolrzednaM, int *nowawspolrzednaM, int *pole,
        int *nowawspolrzednaB, int *wspolrzednaB);
int *parametr; //określam parametr wskaźnikiem (później przypiszę mu wartość)
int *wspolrzednaM, *wspolrzednaB;
*wspolrzednaM = &tablica[41][10];    //nadaje współrzędne początkowe obiektowi 1 w tablicy
*wspolrzednaB = &tablica[39][10];    //nadaje współrzędne początkowe obiektowi 2 w tablicy
int main(void){
}
int ruchM(int *wspolrzednaM, int *nowawspolrzednaM)     //ruch obiektu 1, chcę by poruszał się o + parametr po wersach i - parametr po kolumnach
{
        int nowawspolrzedna; 
        nowawspolrzedna = wspolrzednaM + *(*(tablica + *parametr) - *parametr);
        nowawspolrzedna = nowawspolrzednaM;
        return nowawspolrzednaM;
}
int ruchB(int *wspolrzednaB, int *nowawspolrzednaB)    //ruch obiektu 2, chcę by poruszał się o - parametr po wierszach i + parametr po kolumnach
{
        int nowawspolrzedna;
        nowawspolrzedna = wspolrzednaB + *(*(tablica - *parametr) + *parametr);
        nowawspolrzedna = nowawspolrzednaB;
        return nowawspolrzednaB;
}
int rysujtabele(int *wspolrzednaM, int *nowawspolrzednaM, int *pole, int *nowawspolrzednaB, int *wspolrzednaB) //brakuje tutaj printfa który wydrukowałby mi tabele składającą się ze spacji i dwóch elementów reprezentujących obiekty.
{
                nowawspolrzednaM = wspolrzednaM, nowawspolrzednaB = wspolrzednaB;
                for (pole = &tablica[0][0]; pole <= &tablica[SZEROKOSC][WYSOKOSC]; 
                        pole++)
                                if (*pole != *wspolrzednaM) putchar (' ');  //jeżeli współrzędna pola = współrzędnaM wstawia M, jak nie to 'spacja'
                                else putchar ('M');

                                if (*pole != *wspolrzednaB) putchar (' '); // jeżeli wspólrzędna pola = współrzędnaB wstawia B, jak nie to 'spacja'
                                else putchar ('B');

                                if(wspolrzednaM != wspolrzednaB) continue;  //jeżeli są różne wstawia dalej, jeżeli równe kończy i printfuje koniec.
                                else printf("koniec\n")
        return 0;
}

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