Составить программу, которая будет печатать ромб одним из значков (* или + или #) Выбор значков организовать оператором switch.
Программу решил Naikon, вот его исходный код:
///Программа выводит на экран ромб ///с заданной шириной и высотой #include <iostream> #include <windows.h> using namespace std; ///передаем функции символ которым будт отображаться ромб, высоту и ширину void fn_normal_out(char symbol,int height,int width) { int position=0; for(int y=1;y<=height;++y)///высота { for(int x=1;x<=width;++x)///ширина { ///строим ромб if(x==(width/2+1+position)||x==(width/2+1-position)) { cout<<symbol; } else { cout<<" "; } } cout<<endl; if(y<height/2+1)position++; else position--; } } int main() { SetConsoleOutputCP(1251);///русский язык cout<<"Введите 1 для печати ромба '*' "<<endl; cout<<"Введите 2 для печати ромба '+' "<<endl; cout<<"Введите 3 для печати ромба '#' "<<endl; cout<<"Пожалуйста, введите число 1 - 3: "; int second_choice; cin>>second_choice; if(second_choice<=0||second_choice>3)///Error { cout<<"\nОшибка. Не верный ввод, программа закрывается...\n"; return 0; } cout<<"\nВводить нужно только положительные нечетные числа,\n" <<"иначе ромб не построиться"<<endl; h:cout<<"\nВведите высоту ромба: "; int height; cin>>height; if(height<0||(!(height%2)))///Error { cout<<"\nОшибка.\n"; goto h; } w:cout<<"\nВведите ширину ромба: "; int width; cin>>width; if(width<0||(!(width%2)))///Error { cout<<"\nОшибка.\n"; goto w; } switch(second_choice) { case 1: { char symbol='*'; fn_normal_out(symbol,height,width); break; } case 2: { char symbol='+'; fn_normal_out(symbol,height,width); break; } case 3: { char symbol='#'; fn_normal_out(symbol,height,width); break; } default: { cout<<endl<<"\nОшибка. Не верный ввод, программа закрывается...\n"; return 0; } } return 0; }
Результат работы программы:
CppStudio.com
Введите 1 для печати ромба '*' Введите 2 для печати ромба '+' Введите 3 для печати ромба '#' Пожалуйста, введите число 1 - 3: 3 Вводить нужно только положительные нечетные числа, иначе ромб не построиться Введите высоту ромба: 13 Введите ширину ромба: 13 # # # # # # # # # # # # # # # # # # # # # # # #
Комментарии
Azamat00
odto11
moi variant
Олег Елизаров
// моя программа рисует ромб и при высоте большей чем ширина ромба, чего нет в образце.
#include <bits\stdc++.h>
using namespace std;
int x, y;
string s;
int main()
{
setlocale(LC_ALL, «rus»);
cout << «Ââåäèòå 1 äëÿ ïå÷àòè ðîìáà ‘*'»;
cout << endl << «Ââåäèòå 2 äëÿ ïå÷àòè ðîìáà ‘+'»;
cout << endl << «Ââåäèòå 3 äëÿ ïå÷àòè ðîìáà ‘#'»;
int ch; cout << endl
<< «Ïîæàëóéñòà, ââåäèòå ÷èñëî 1 — 3: «; cin >> ch;
switch ( ch ){
case 1:{
s = «*»;
break;
}
case 2:{
s = «+»;
break;
}
case 3:{
s = «#»;
break;
}
}
cout << endl << «Ââîäèòü íóæíî òîëüêî ïîëîæèòåëüíûå íå÷åòíûå ÷èñëà,èíà÷å ðîìá íå ïîñòðîèòüñÿ»;
cout << endl << «\nÂâåäèòå âûñîòó ðîìáà: «; cin >> y;
cout << endl << «Ââåäèòå øèðèíó ðîìáà: «; cin >> x;
if (y > x ) { int str = (y-x)/2;
y = x;
for (int strV = 1; strV<=str;strV++)
cout << endl;
for (int j = 0; j < y/2; j++){
for (int i = 0;i < x; i++){
if (i == x / 2 — j || i == x / 2 + j){
cout << s;}
else cout <<» «;
}cout << endl;
}
for (int j = y/2 ; j >=0; j—){
for (int i = 0;i < x; i++){
if (i == x / 2 — j || i == x / 2 + j){
cout << s;}
else cout <<» «;
}cout << endl;
}
for (int strN = 1; strN<=str;strN++)
cout << endl;
}
else {
for (int j = 0; j < y/2; j++){
for (int i = 0;i < x; i++){
if (i == x / 2 — j || i == x / 2 + j){
cout << s;}
else cout <<» «;
}cout << endl;
}
for (int j = y/2 ; j >=0; j—){
for (int i = 0;i < x; i++){
if (i == x / 2 — j || i == x / 2 + j){
cout << s;}
else cout <<» «;
}cout << endl;
}
}
cout << endl << «\a\a\a»;
system («pause»);
return 0;
}
colt
Решение задачи для разной ширины и высоты ромба:
colt
Прошу прощения, внёс немного изменения в код.
Константин Воливач
#include <iostream>
#include <conio.h>
using namespace std;
int main(){char symbol[2];
int a,b,h,l,n,g;
setlocale(LC_ALL,»RUS»);
cout<<«Введите 1 если хотите рисовать *\n»;
cout<<«Введите 2 если хотите рисовать +\n»;
cout<<«Введите 3 если хотите рисовать #\n»;
cin>>a;
switch(a){
case 1:symbol[1]=’*';
case 2:symbol[1]=’+';
case 3:symbol[1]=’#';
};
cout<<«Введите высоту ромба должно быть нечётное число «;
cin>>a;
cout<<«Введите ширину ромба должно быть нечётное число «;
cin>>b;
h=a/2+1;
l=b/2+1;
n=l;
for(int j=0;j<h;j++){
for(int i=0;i<=b;i++){
if (i==l||i==n)
{cout<<symbol[1];}
else
cout<<» «;
}
cout<<endl;
l++;
n—;
}
l—;//Уменьшаем наши счётчики звездочек т.к у нас увлечение происходило в конце и они набрали один лишний
n++;
for( int j=0;j<h-1;j++){
l—;
n++;
for(int i=0;i<=b;i++){
if (i==l||i==n)
{cout<<symbol[1];}
else
cout<<» «;
}
cout<<endl;
}
getch();
}