na znalezienie miejsca w którym masz wstawić odpowiednią gwiazdke- > centralnie jest wzór
https://matura100procent.pl/prostokat-wlasciwosci-i-wzory/#:~:text=W%C5%82asno%C5%9Bci%20prostok%C4%85ta&text=Posiada%20przek%C4%85tne%20r%C3%B3wnej%20d%C5%82ugo%C5%9Bci%2C%20kt%C3%B3re,prostok%C4%85t%20na%20dwa%20tr%C3%B3jk%C4%85ty%20prostok%C4%85tne.
będzie on zawsze w połowie od danego boku cztli dla np 6 i 8 - > to od punktu 0,0 bedzie to w iteracji np i = 3 j = 4 w zależności ktory bok przypiszesz
Dla np 5 i 7 = > bedzie to i = 3 oraz j = 4 jestli i = 5 i j =7
następnie gwiazdki pozostają tylko na bokach :
czyli gdy i =0 -> na długość drugiego boku jesli j =0 na długość tego boku i to samo dla ostatniej długości czyli i = max oraz j = max naprzemiennie
Warunek na wypisanie wszystkich boków
if(i==0 || i==wysokosc-1 || j==0 || j==szerokosc-1){
putchar('*');
}
jest okej pozostaje ci dodac warunek o ktorym mowilem na wyznaczenie srodka czyli
Warunek np dodatkowy:
else if(i== (wysokosc-1)/2 && j==(szerokosc-1)/2)
szerokość/2 i wysokość /2
zaokrąglona do całkowitej -> będącej sufitem nie podłogą w matematyce czyli wartością górną dla boku o dl 3 -> 1.5 wiec powinno być na 2
Dodając na szybko :
#include <stdio.h>
int main()
{
printf("Zadanie 1\n");
int wysokosc, szerokosc;
printf("Podaj wysokosc i szerokosc: \n");
scanf("%d %d", &wysokosc, &szerokosc);
for(int i = 0; i < wysokosc; i++){
for(int j = 0; j < szerokosc; j++){
if(i==0 || i==wysokosc-1 || j==0 || j==szerokosc-1){
putchar('*');
}
else if(i== (wysokosc-1)/2 && j==(szerokosc-1)/2){
putchar('*');
}
else{
putchar(' ');
}
}
printf("\n");
}
return 0;
}
rezultat
5
7
*******
* *
* * *
* *
*******