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.
- Rejestracja:ponad 8 lat
- Ostatnio:około miesiąc
- Postów:78
0
AnyKtokolwiek
Serio zrobiłeś? Pokaż ten kod

lion137
Jaki to kwadrat?

- Rejestracja:ponad 19 lat
- Ostatnio:2 miesiące
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;
}
- Rejestracja:prawie 10 lat
- Ostatnio:około 4 godziny
- Lokalizacja:Tam gdzie jest (centy)metro...
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, '#'));
}

Też bym nie zaliczał za using namespace std ;)

Tylko że to nie zupełnie spełnia zadanie, tu już są 3 pętli (co prawda ukryte), zaś brakuje jeszcze jednej na powtórzenie wprowadzania rozmiaru.
Jak raz w przykładzie użyłem using namespace std, to od razu wypomnieli :-( A z pętlą.. prawda.. obiecuję że się poprawię.... :-) ("następną razą") PS. Jak mam się czepiać sam do siebie to nie ma sprawdzenia >= 3...

input_iterator
+ for_each
? W sensie aby @Mokrowski się nie czepiał :D
fill_n(ostream_iterator<string>(cout, "\n"), sz >= 3 ? sz: 0, string(sz, '#')); albo jakoś tak...

- Rejestracja:prawie 6 lat
- Ostatnio:około 3 godziny
- Postów:1002
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);
}
edytowany 3x, ostatnio: Spearhead

Ten kod ma jedną wadę, można by spróbować zaryzykować i pokazać ten kod prowadzącemu. :D Ba tak a propos dwie pętli tu masz, zastąp
"#"
na pojedyncze znaki '#'
- i naprawdę zero pętli.

@_13th_Dragon: słuszna uwaga, poprawione ;)

Chociaż w sumie to chyba używa
write
pod spodem i po prostu kopiuje cały blok danych, więc chyba na to samo wychodzi

Komputerów kwantowych jeszcze nie wynaleziono, kopiowanie bloku to i tak pętlą ale na poziomie assemblera.
- Rejestracja:prawie 10 lat
- Ostatnio:około 4 godziny
- Lokalizacja:Tam gdzie jest (centy)metro...
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...
edytowany 2x, ostatnio: Mokrowski