Ошибка при поиске диапазона значений в массиве - PullRequest
0 голосов
/ 04 декабря 2018

Программа «читает» неотрицательные целые числа и заполняет массив МАКС. Размера 100 до тех пор, пока он не будет заполнен или пользователь не выдаст -1. Затем диапазон функций находит минимальное и максимальное значения и «отправляет» их в программу.Например, если пользователь задает 67 54 78 85 -1, диапазон значений составляет 54-85.

Проблема в том, что main не печатает диапазон.Вместо этого он печатает: «Диапазон значений 2 - 24576000»

#include <stdio.h>
#include "simpio.h"

int read_data(int A[]);
void range(int sum,int A[100], int *r1, int *r2);

int main()
{
    int A[100], sum, max, min,i;
    int *r1,*r2;

    r1 = &max;
    r2 = &min;
    printf("Enter the elements of the array, one per line.\n");
    printf("Use -1 to signal the end of the list.\n");
    sum=read_data(A);
    range(sum,A, &max, &min);
    printf("The number of elements is: %d\n",sum);
    printf("The range of values is %d - %d",min ,max);

}

int read_data(int A[])
{
    int i,sum,value;

    sum=value=i=0;
    while ( i<100 && value !=-1)
    {
        printf("? ");
        value = GetInteger();
        if (value != -1)
            {
                A[i] = value;
                value = A[i];
                sum+=1;
            }
i++;

    }
    return sum;
}

void range(int sum,int A[100], int *r1, int *r2)
{
    int i,max,min;
    max =0;
    min = 32767;
    *r1 = min;
    *r2 = max;


    for(i=0;i<sum;i++)
    {
        if (A[i]!=-1)
        {
            if (A[i]>max)
                max = A[i];
            if (A[i]<min)
                min = A[i];
        }
    }
    *r1 = max;
    *r2 = min;
}

1 Ответ

0 голосов
/ 04 декабря 2018

Одна из проблем заключается в том, что вы не увеличиваете значение i в функции read_data.

Другая проблема заключается в том, что 4-й printf

printf ("% Числоэлементов:% d \ n ", сумма);

в функции main имеет "% T", который рассматривается функцией printf как спецификатор формата (аналогичный тому, который вы используете для целого числа "% d").Если вы действительно хотите написать% там, вы должны использовать формат

printf ("%% Количество элементов:% d \ n", сумма);

и будет напечатан только один%.

Если вы хотите узнать больше о спецификаторах формата, принятых printf http://www.cplusplus.com/reference/cstdio/printf/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...