C语言中数组的排序与分析

C语言中数组的排序与分析,c,arrays,for-loop,pointers,bubble-sort,C,Arrays,For Loop,Pointers,Bubble Sort,我做了一个小骰子游戏,如果我投5次相同的数字,我会得到一千,如果我投4次相同的数字,我会得到一个扑克 我的问题是,我的代码只适用于“1”和“2”,如果我尝试使用4来获得一个扑克,那么它不算 #include <stdio.h> void abfrage(int wurf[], int size){ int i; for (i=0; i<size; i++){ printf("Würfel %i: ", i+1);

我做了一个小骰子游戏,如果我投5次相同的数字,我会得到一千,如果我投4次相同的数字,我会得到一个扑克

我的问题是,我的代码只适用于“1”和“2”,如果我尝试使用4来获得一个扑克,那么它不算


#include <stdio.h>

void abfrage(int wurf[], int size){
    int i;
        for (i=0; i<size; i++){
            printf("Würfel %i: ", i+1);
            scanf("%i", &wurf[i]);
        }
}

// switch int*
void swap(int *xp, int *yp) 
{ 
    int temp = *xp; 
    *xp = *yp; 
    *yp = temp; 
} 
// Sort the array
void bubbleSort(int wurf[], int size) 
{ 
    int i, j; 
    for (i = 0; i < size-1; i++){          
        for (j = 0; j < size-i-1; j++){ 
            if (wurf[j] > wurf[j+1])
            {
                swap(&wurf[j], &wurf[j+1]); 
            }
        }
    }
} 

void arrayausgabe(int wurf[], int size){
    int u = 0;
    for (u=0;u<size;u++) {
        printf("array nummer %i: ", u); // err with "&"
        printf("%i \n", wurf[u]);
    }
}

void bewertung(int wurf[]){
    int *x;
    x = wurf;

    if (*x==*(x+1)==*(x+2)==*(x+3)==*(x+4)) {
        printf("Grand");
    }else if (*x==*(x+1)==*(x+2)==*(x+3) || *(x+1)==*(x+2)==*(x+3)==*(x+4)) {
        printf("Poker");
    }else if ((*x==*(x+1)==*(x+2) && *(x+3)==*(x+4) )||(*(x+2)==*(x+3)==*(x+4) &&  *x==*(x+1))) {
        printf("Full House");
    }else {
        printf("HAAA Verloren");
    }
}

int main() {
    int  wurf[5];
    printf("Programm Würfelspiel\nGrand\tgleiche Augenzahl auf allen 5 Würfeln\nPoker\tgleiche Augenzahl auf 4 Würfeln\nFull House\tgleiche und 2 gleiche Augenzahlen\n\nBitte gibt deine gewürfelten zahlen ein\n");
    abfrage(wurf, 5);
    bubbleSort(wurf, 5);
    arrayausgabe(wurf, 5);
    bewertung(wurf);
}


#包括
无效碎片(整数wurf[],整数大小){
int i;
对于(i=0;i wurf[j+1])
{
掉期(&wurf[j]、&wurf[j+1]);
}
}
}
} 
无效arrayausgabe(整数wurf[],整数大小){
int u=0;
对于(u=0;u此逻辑:

if (*x==*(x+1)==*(x+2)==*(x+3)==*(x+4)) {
与C中的预期不同(尽管在Python中是这样):与
=
进行比较会根据值是否不同或相等返回0或1。链接它们不会检查它们是否都相等;相反,它会检查前两个是否相等,然后比较相等的结果(可以是0或1)相对于第三个值的值,依此类推

您需要分别检查每个比较:

if (wurf[0] == wurf[1] && wurf[0] == wurf[2] && wurf[0] == wurf[3] && wurf[0] == wurf[4]) {

您是否可以添加注释,解释此代码的不同部分正在尝试执行的操作?并更清楚地解释问题所在,以及如何重新创建它?执行
*(x+1)
是完全不必要且令人困惑的;使用数组符号访问数组:
wurf[0]==wurf[1]
…没有时间检查所有代码,但是冒泡排序函数中有一个明确的错误。(1)重新检查
循环的
的上限和下限,以及(2)条件行
if(wurf[j]>wurf[j+1])
的索引。您还应该检查
scanf()的返回值
以确保它读取了预期的字段数。