Tworzenie kwadratu

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.

3

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

2

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

#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

3

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

#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, '#'));
}
1

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

#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);
}
0

Inne wynaturzenia...

#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...

#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...

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