gpt4 book ai didi

C 函数 shuffle、read_vector、display_vector

转载 作者:行者123 更新时间:2023-11-30 20:42:08 25 4
gpt4 key购买 nike

如何在 C 中使用 read_vectordisplay_vector?我必须对数组进行洗牌,然后使用这个函数。void shuffle(int tab[], int size)。我不知道 read_vectordisplay_vector 是否好。任何帮助都会很好。(最多 100 个数字)

#include<stdio.h>

void shuffle(int tab[], int size);
int read_vector(int vec[], int size, int stop_value);
void display_vector(const int vec[], int size);

int main()
{
int i;
int tab[101], a;

printf("Podaj pierwszy wektor: ");
for(i=0; i<100; i++)
{
a = scanf("%d", &tab[i]);
if(a<1)
{
printf("Incorrect input");
return 1;
}
if(tab[0]==0)
{
printf("Not enough data available");
return 2;
}
if(tab[i]==0)
{
break;
}
}

shuffle(tab[i], i);

for(i=0; i<100; i++)
{
printf("%d", tab[i]);
}
return 0;
}

void shuffle(int tab[], int size)
{
int i, j=0, x=0;

for(i=size; i>0; i--)
{
j = rand() % size+1;
x = tab[i];
tab[i]=tab[j];
tab[j]=x;
x=0;
}

}

最佳答案

以下建议代码:

  1. 干净地编译
  2. 合并对问题的评论
  3. 执行所需的功能
  4. 正确检查错误
  5. 消除了“神奇”数字 100 和 101
  6. 因为 OP 代码没有 read_vector() 的单独函数也不display_vector()我没有单独实现它们,但是,它们的实现应该很简单

现在建议的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void shuffle(int tab[], int size);
//int read_vector(int vec[], int size, int stop_value);
//void display_vector(const int vec[], int size);

#define MAX_VECTOR_LENGTH 100

int main( void )
{
int i;
int tab[ MAX_VECTOR_LENGTH ];

srand( (unsigned)time( NULL ) );

printf("Podaj pierwszy wektor:\n ");
for(i=0; i<MAX_VECTOR_LENGTH; i++)
{
printf( "%s", "enter vector entry or 0 to indicate done " );
if( scanf("%d", &tab[i]) != 1)
{
fprintf( stderr, "scanf failed\n");
exit( EXIT_FAILURE );
}

// implied else, scanf successful

if(tab[i]==0)
{
break;
}
}

shuffle(tab, i-1);

for(int j = 0; j < i; j++)
{
printf("%d ", tab[j]);
}
return 0;
}


void shuffle(int tab[], int size)
{
int i;
int j;
int x;

for(i=size; i>0; i--)
{
j = rand() % size;
x = tab[i];
tab[i]=tab[j];
tab[j]=x;
}
}

程序的典型运行结果是:

Podaj pierwszy wektor: 
enter vector entry or 0 to indicate done 1
enter vector entry or 0 to indicate done 2
enter vector entry or 0 to indicate done 3
enter vector entry or 0 to indicate done 4
enter vector entry or 0 to indicate done 5
enter vector entry or 0 to indicate done 6
enter vector entry or 0 to indicate done 7
enter vector entry or 0 to indicate done 0
1 6 5 3 4 7 2

关于C 函数 shuffle、read_vector、display_vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54001040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com