• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prośba o nakierowanie

Object Storage Arubacloud
0 głosów
223 wizyt
pytanie zadane 19 listopada 2022 w C i C++ przez xYoungProgramista Nowicjusz (150 p.)

Witam, chciałbym prosić  o pomoc/ nakierowanie jak zrobić prostokąt z plusem w środku. Tutaj obrazek jak to ma wyglądać

https://imgur.com/OXgIMo0

a oto mój kod:

#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{
                putchar(' ');
            }
        }
        printf("\n");
    }
return 0;
}

Proszę kogoś o nakierowanie mnie jak to zrobić, domyślam się, że to trzeba na pętlach zrobić, lecz jakoś nic nie przychodzi mi do głowy :D

3 odpowiedzi

+1 głos
odpowiedź 20 listopada 2022 przez VBService Ekspert (253,120 p.)
wybrane 20 listopada 2022 przez xYoungProgramista
 
Najlepsza

Ponieważ "rysujemy" za pomocą znaków (char) a nie np. pikseli to "krzyż" uzyskamy przy obydwu wartościach nieparzystych

proponuje zmienić na

float wysokosc, szerokosc;

i dla

// i
(wysokosc/2)+.5==i

// j
(szerokosc/2)+.5==j

[ on-line ]

+1 głos
odpowiedź 19 listopada 2022 przez marcin99b Szeryf (82,080 p.)

Obecny kod powinien zrobić prostokąt z pustym środkiem, albo ja czegoś nie widze 

Jeśli chcesz plusa w środku, to dodaj || dla sytuacji gdzie i lub j są w środku, teraz tego nie masz 

+1 głos
odpowiedź 19 listopada 2022 przez Wiciorny Ekspert (269,710 p.)

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
*******
*          *
*    *    *
*          *
*******

Podobne pytania

+1 głos
1 odpowiedź 247 wizyt
pytanie zadane 19 października 2017 w SQL, bazy danych przez Alekzg Użytkownik (830 p.)
0 głosów
1 odpowiedź 495 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...