首页 > 解决方案 > C中的数组问题

问题描述

我有一个 C 编程的大学项目。我遇到了以下任务的问题。我的程序应该在两个数组中排序数字。在第一个数组中,我必须保存(每五个元素中最大的一个),这是我的问题。我不确定如何使读取五个元素的循环比较它们,取最大的一个,然后继续对其他元素执行此操作。我希望有人帮忙,因为我被阻止了。

#define A 100

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


void show(int x[], int nx); //функция за показване на масивите
float vavedi(int x[], int nx); //функция, чрез която ръчно въвеждаме числата и ги обработваме
FILE* readFile(char* fname); //функция която чете файл и представя съдържанието му като масиви

int main()
{
    int call, a = 0, b = 0, mode = 0, i = 0;
    int check = 0;
    char fail[A];
    char* menu[] = {
     "PROGRAM STARTED!",
     "Enter an option:",
     "1 : Write the numbers.",
     "2 : Choose from a file.",
     "0 : Exit."
    };

    do {
        for (i = 0; i < 5; i++)
        printf("%s\n", menu[i]);

        check=scanf("%d", &mode);

            if (check != 1)
                printf("ERROR! Try again!");


        switch (mode)
        {
            case 1: {
                //в случай 1 числата се въведждат от потребителя
                call = vavedi(a, b);
                break;
            }

            case 2: {
                //в случай 2 потребителя използва съществуващ файл
                printf("Enter the path of the file you want to open:\n");
                scanf("%s", fail);
                call = readFile(fail);
                if (call == NULL) {
                    printf("The file doesn't exist! Try again!\n");
                }
                break;
            }
            case 0:
                break;

            default:
            {
                printf("ERROR! Try again!\n");
            }
        }

    } while (mode != 0);

    printf("\nThe program ended!\n");
    return 0;
}
void show(int x[], int nx)
{
    int k;
    for (k = 0; k < nx; k++)
        {
         printf("\n Element[%d]= %d", k, x[k]);
        }
}

float vavedi(int x[], int nx)
{
    int call=0;
    int enter=0;
    int imin, max;
    int b[A], c[A];
    int i, j, j1, count;
    j = 0;
    do {
        printf("\nCount of the elements:");
        scanf("%d", &count);
            if (count <= 0 || count > 100)
                printf("Invalid input! Try again!\n");
    } while (count <= 0 || count > 100);

    for (i = 0; i < count; i++)
    {
        printf("\nEnter an element:");
        scanf("%d", &c[i]);
    } 


    printf("\n");
    return enter;
}

标签: carraysfunctionsorting

解决方案


另一个问题如下:

{

   int c[A], b[A];
   int i = 0, j = 0, k = 0, num;
   FILE* fp= NULL; //указател за файл
   fp = fopen(fname, "r");
   if (fp)
   {
       while (fscanf(fp, "%d", &c[i]) != EOF)
       i++;

      num=i;
    size_t size = ceil(num/5.0);
    memset(b , INT_MIN , size);
    for(i = 0 ; i < num ; i++)
   {
     b[i/5] = b[i/5] > c[i] ? b[i/5] : c[i];
   }
   printf("\nARRAY1:\n");
   for(i = 0 ; i < size; i++)
   {
    buble(b, i);
    printf(" Element[%d]=%1d\n", i, b[i]);
   }

   printf("\nARRAY2:");
   buble(c, num);
   show(c, num);

   printf("\n");

   }
  fclose(fp);
return fp;
}

It doesn't calculate the rigth way.

推荐阅读