我在編程不和諧頻道上發現了一個簡單的任務,作為一個新手,我似乎無法解決它。
該程式應使用以寬度、高度、char_1 和 char_2 作為引數的子程式,主程式應僅處理文本和輸入。您可以假設用戶沒有放置大于 26 的寬度和大于 100 的高度。
Input height and width: 5 4 Input characters your program should consist of: H S 1 HSHS 2 HSHS 3 HSHS 4 HSHS 5 HSHS ABCDInput height and width: 3 7 Input characters your program should consist of: / ! 1 /!/!/!/ 2 !/!/!/! 3 /!/!/!/ ABCDEFG
我只能想出一個輸入高度的解決方案。
我該如何解決這個問題?非常感謝任何提示。
這是我的開始:
#include <iostream>
#include <string>
using namespace std;
void print_board(int const width,
int const height,
char const char_1,
char const char_2)
{
for (int i {1}; i <= height; i)
{
cout << i << endl;
}
}
int main()
{
int width {};
int height {};
char char_1 {};
char char_2 {};
cout << "Enter width and height: ";
cin >> width >> height;
cout << endl << "Enter characters: ";
cin >> char_1 >> char_2;
cout << endl;
print_board(width, height, char_1, char_2);
return 0;
}
uj5u.com熱心網友回復:
對于主板,您需要 2 個回圈 - 一個用于列印height行數,另一個用于列印width每行的字符數。
您還需要在板后進行另一個回圈來列印出一行width字母數字。
以下對我有用:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
void print_board(int const height,
int const width,
char const char_1,
char const char_2)
{
bool toggle = false;
size_t length = to_string(height).length();
for (int i = 1; i <= height; i)
{
cout << setw(length) << i << ' ';
for (int j = 0; j < width; j){
cout << (toggle ? char_2 : char_1);
toggle = !toggle;
}
cout << endl;
}
cout << setw(length 1) << ' ';
for (int j = 0; j < width; j){
cout << char('A' j);
}
cout << endl;
}
int main()
{
int width {};
int height {};
char char_1 {};
char char_2 {};
cout << "Enter height and width: ";
cin >> height >> width;
cout << endl << "Enter characters: ";
cin >> char_1 >> char_2;
cout << endl;
print_board(height, width, char_1, char_2);
return 0;
}
在線演示
或者:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
void print_board(int const height,
int const width,
char const char_1,
char const char_2)
{
const char arr[] = {char_1, char_2};
int index = 0;
size_t length = 0;
if (height < 10)
length = 1;
else if (height < 100)
length = 2;
else
length = 3;
for (int i = 1; i <= height; i)
{
cout << setw(length) << i << ' ';
for (int j = 0; j < width; j){
cout << arr[index];
index = (index 1) % 2;
}
cout << endl;
}
cout << setw(length 1) << ' ';
for (int j = 0; j < width; j){
cout << char('A' j);
}
cout << endl;
}
int main()
{
int width {};
int height {};
char char_1 {};
char char_2 {};
cout << "Enter height and width: ";
cin >> height >> width;
cout << endl << "Enter characters: ";
cin >> char_1 >> char_2;
cout << endl;
print_board(height, width, char_1, char_2);
return 0;
}
在線演示
uj5u.com熱心網友回復:
您的代碼中的錯誤是試圖更改height宣告為常量的值。
這就是為什么你的代碼不會編譯,而你的編譯器,不管它是什么,可能會告訴你這一點。
但幸運的是,您不需要更改height!
列印高度是一個簡單、直接的 for 回圈,從 1 到高度值:
for (int i = 1; i <= height; i ) {
cout << i << endl;
}
這個謎題的棘手部分是實際列印行的內容,因為如第二個示例所示,您需要在兩個字符之間連續迭代,而不是從第一個字符開始每一行。
但是有一個簡單的技巧可以做到這一點!
我會解釋它,但把代碼留給你:
- 把你的兩個字符放在一個字符陣列中。
- 將兩個回圈中的計數器相乘以計算當前字符的數量。
- 使用模數 (
%)的冪來確定應該列印哪個字符。
玩得開心!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372506.html
上一篇:雙向鏈表冒泡排序
