Tworzenie kwadratu

Tworzenie kwadratu
S1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 79
0

Program ma tworzyć kwadrat taki jak np. ten ###
# #
###
Użytkownik ma wprowadzić wysokość i szerokość kwadratu ale nie mogę być mniejsze od 3.
W programie mają zostać użyte max 2 pętle.
Jak tor zrobić? Zrobiłem pierwszą pętle która wczytuje i sprawdza czy szerokość i wysokość są większe od 3.

LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
3

Wysokość i szerokość kwadratu o_O, kwadrat ma wszystkie boki równej długości.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

Działa, ale prowadzącemu nie pokażesz :D

Kopiuj
#include <iostream>
using namespace std;

int main() 
{
	size_t sz,i;
	for(cin>>sz,i=sz*sz;;(sz>=3)&&(i--);cout<<'#'<<(i%sz?"":"\n")) if(!i) cin>>sz,i=sz*sz;
	return 0;
}

https://ideone.com/GHlBtZ

MO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tam gdzie jest (centy)metro...
3

Działa, prowadzącemu pokażesz ale nie zaliczysz :/

Kopiuj
#include <algorithm>
#include <iostream>
#include <string>
#include <iterator>
#include <cstddef>

using namespace std;

int main() {
    size_t sz;
    cin >> sz;
    fill_n(ostream_iterator<string>(cout, "\n"), sz, string(sz, '#'));
}
Spearhead
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1007
1

Można to zrobić i bez żadnej pętli:

Kopiuj
#include <iostream>

void print_character(int row, int column, int limit) {
    if(column == limit) {
        return;
    } else if(row==limit) {
        std::cout.put('\n');
        print_character(0, column+1, limit);
    } else {
        std::cout.put('#');
        print_character(row+1, column, limit);
    }    
}

void get_input() {
    int size;
    std::cin >> size;
    if(size < 3) {
        get_input();
    } else {
        print_character(0, 0, size);
    }
}

int main() {
    int size = 0;
    while(size < 3) {
        std::cin >> size;
    }

    print_character(0, 0, size);
}
MO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tam gdzie jest (centy)metro...
0

Inne wynaturzenia...

Kopiuj
#include <iostream>
#include <iomanip>

int main() {
    unsigned sz;
    std::cin >> sz;
    auto row = std::setw(sz + 1);
    std::cout << std::setfill('#');
    if(sz >= 3) {
        while(std::cout << row << '\n', --sz);
    }
}

albo...

Kopiuj
#include <iostream>

void square(int mod, int counter) {
    if(!(counter % mod) && (counter != mod * mod)) {
        std::cout.put('\n');
    }
    if((mod < 3) || !counter) {
        return;
    }
    square((std::cout.put('#'), mod), counter - 1);
}

int main() {
    int sz;
    square((std::cin >> sz, sz), sz * sz);
}

Tak swoją drogą, jakby "wiercić dziurę w brzuchu", to standard nie definiuje sposobu implementacji ani manipulatorów ani algorytmów. Stąd, precyzyjnie to wyłącznie przypuszczenie że są to pętle (i oczywiste że w popularnych implementacjach są to pętle) :-) Nie definiuje także obsługi rekurencji ani jej "ogonowej optymalizacji".
Ot... fistaszki...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.