所以我不知道如何將連續數字的數字放入括號中。例如:1 3 6 6 4 2 2 1 6。應該是:1 3 (6 6) 4 (2 2) 1 6. 有人可以幫我嗎?這是我現在的代碼。太感謝了!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int lower = 1, upper = 6, count = 20, num;
srand(time(0));
for (int i = 0; i < count; i ) {
num = (rand() % (upper - lower 1)) lower;
printf("%d ", num);
}
return 0;
}
uj5u.com熱心網友回復:
int print(FILE *fo, const int *arr, const size_t size)
{
int insequence = 0, nchars = 0;
if(fo && arr && size)
{
for(size_t curr = 0; curr < size - 1; curr )
{
if(arr[curr] == arr[curr 1])
{
if(!insequence)
{
nchars = fprintf(fo, "(");
insequence = 1;
}
nchars = fprintf(fo, "%d ", arr[curr]);
}
else
{
if(insequence)
{
nchars = fprintf(fo, "%d) ", arr[curr]);
insequence = 0;
}
else
{
nchars = fprintf(fo, "%d ", arr[curr]);
}
}
}
nchars = fprintf(fo, "%d%s", arr[size-1], insequence ? ")" : "");
}
return nchars;
}
int main(void)
{
int arr[] = {1, 3, 6, 6, 6, 4, 2, 2, 1, 0, 0};
print(stdout, arr, sizeof(arr)/sizeof(arr[0]));
}
https://godbolt.org/z/acGfj6oj4
還有你的案例:
int main(void)
{
int lower = 1, upper = 6, num;
size_t count = 20;
int arr[count];
srand((unsigned)time(NULL));
for (size_t i = 0; i < count; i ) {
num = (rand() % (upper - lower 1)) lower;
arr[i] = num;
}
print(stdout, arr, sizeof(arr)/sizeof(arr[0]));
}
https://godbolt.org/z/nbe7ehPbn
uj5u.com熱心網友回復:
您需要將所有隨機值保存在一個陣列中,并檢測它們是否與下一個相同并且與前一個不同,以讓程式知道是否列印括號。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int lower = 1, upper = 6, count = 20, num;
if (count == 0) return 0; // if count = 0 then don't do anything
srand(time(0));
// if count = 1 just print the only random number
if (count == 1) {
printf("%d ", (rand() % (upper - lower 1)) lower);
return 0;
}
int* arr = (int*) malloc(count * sizeof(int));
for (int i = 0; i < count; i ) {
num = (rand() % (upper - lower 1)) lower;
arr[i] = num;
}
// Not to test i != 0 every loop
if (arr[0] == arr[1]) {
printf("(%d ", arr[0]);
}else {
printf("%d ", arr[0]);
}
for (int i = 1; i < count - 1; i ) {
int a = arr[i - 1] == arr[i], b = arr[i] == arr[i 1];
if (!a && b) {
printf("(%d ", arr[i]);
continue;
}else if (a && !b) {
printf("%d) ", arr[i]);
continue;
}
printf("%d ", arr[i]);
}
// Not to test i != count every loop
if (arr[count - 2] == arr[count - 1]) {
printf("%d) ", arr[count - 1]);
}else {
printf("%d ", arr[count - 1]);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406066.html
標籤:
下一篇:在二維陣列上使用函式
