如何将全球传递到函数以及如何计算阵列的输入

  • 本文关键字:计算 何计算 阵列 函数 c
  • 更新时间 :
  • 英文 :


我被谋求不使用全球功能。我不知道在哪里有int测量[长度],x,i;像这样工作。我还需要一个函数来计算用户在getMeasurement中输入的测量数(nrofmeasourions)。例如,如果它们输入4而不是f 10。计算平均值。

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <limits.h>
#define LENGTH 10
const char *IntroMsg = "nt Hello To TEST THE PRGRAM!n",
           *MenuMsg = "nt Menu nt v (View) nt e (Enter) nt c (Compute) nt r (Reset) nt q (Quit) nn";
int    measurements[LENGTH],//not here
       x, i;//not here
void getMeasurements(){
    for(x=0; x<LENGTH; x++){
        printf("Enter number #%d: ", x+1);
        scanf("%d", &measurements[x]);
        if(measurements[x]==0){
            break;
    }
    }
    return; 
}
void getView(){
    printf("tn");
    printf("Your measurements:n");
    if(x>0){
        for (i = 0; i < x; i++){        
        printf("b %d ", measurements[i]);
        }
    }
    else if(x==0){
        printf(" [NO MEASUREMENTS]");
    }
    printf("n");
}
void getCompute(){
    int min = INT_MAX;
    int max = INT_MIN;
    int calculus;
    float sum;
    for(x=0; x<LENGTH; x++){
            if (measurements[x]<min) min=measurements[x];
            if (measurements[x]>max) max=measurements[x];
            sum=sum+measurements[x];
            calculus= measurements[x] - (sum/LENGTH);
            printf("[%d]", calculus);
    }
    printf("nMax number: %d", max);
    printf("nMin number: %d", min);
    printf("nAverage: %.2f", sum/LENGTH);
    printf("nn");
}   
int main(){
    while(1){
        char choice;
        puts (MenuMsg);
        scanf(" %c", &choice);
        if(choice=='e')
            getMeasurements();
        else if(choice=='v'){
            getView();
        }   
        else if(choice=='c'){
            getCompute();
        }   
        else if(choice=='q'){
            break;
        }
    }
    return 0;
}

您可以做这样的事情:

#include <stdio.h>
#define MAX_LENGTH 10
const char *IntroMsg = "nt Hello To TEST THE PROGRAM!n";
const char *MenuMsg  = "nt Menu n"
                         "t v (View)n"
                         "t e (Enter)n"
                         "t c (Compute)n"
                         "t r (Reset)n"
                         "t q (Quit)nn";
int getMeasurements(int *measurements, int length) {
    int i;
    for (i = 0; i < length; i++) {
        printf("Enter number #%d: ", i+1);
        scanf("%d", &measurements[i]);
        if(measurements[i] == 0) {
            break;
        }
    }
    return i;
}
void getView(const int *measurements, int length){
    int i;
    printf("tnYour measurements:n");
    if (length == 0) {
        printf(" [NO MEASUREMENTS]n");
        return;
    }
    for (i = 0; i < length; i++) {
        printf("b %d ", measurements[i]);
    }
    printf("n");
}
void getCompute(const int *measurements, int length) {
    int min, max, calculus, i;
    float sum = 0;
    if (length == 0) {
        printf(" [NO MEASUREMENTS]n");
        return;
    }
    min = max = measurements[0];
    for (i = 0; i < length; i++){
            if (measurements[i] < min) min = measurements[i];
            if (measurements[i] > max) max = measurements[i];
            sum += measurements[i];
            calculus = measurements[i] - (sum / length);
            printf("[%d]", calculus);
    }
    printf("nMax number: %d", max);
    printf("nMin number: %d", min);
    printf("nAverage: %.2f", sum / length);
    printf("nn");
}
int main() {
    int measurements[MAX_LENGTH];
    int measurements_count = 0;
    int run = 1;
    while (run) {
        char choice;
        puts(MenuMsg);
        scanf(" %c", &choice);
        switch (choice) {
        case 'e':
            measurements_count = getMeasurements(measurements, MAX_LENGTH);
            break;
        case 'v':
            getView(measurements, measurements_count);
            break;
        case 'c':
            getCompute(measurements, measurements_count);
            break;
        case 'q':
            run = 0;
            break;
        default:
            printf("Wrong inputn");
            break;
        }
    }
    return 0;
}

最新更新