Member 13428864 Ответов: 1

Помогите мне найти ошибки в этом вводе


#include<stdio.h>
#include<conio.h>

int main()
{
	int i;
	float num, average, sum;
	
	printf("Maximum num of inputs: ");
	scanf("%d",&i);
	for(i=1;i>=1;++i)
	{
		printf("Enter %d\n: ",i);
		scanf("%d",&i);
		sum=+num;
	}
	jump:
		average=sum/(i-1);
		printf("Average: %.2f",i);
		getch ();
		return 0;
}


Что я уже пробовал:

Я не думаю, что результат, который я получил, является правильным

jeron1

Это вообще компилируется?

for(i=1;i>=1;++i);    <-- semicolon not needed 
.
.
if("i<0.0");        <- semicolon not needed 
goto                <- goto nothing?

Member 13428864

неужели выход должен выглядеть вот так? Или он должен остановиться в зависимости от того, сколько максимальное количество входов я ставлю?


Максимальное количество входов: 3
Введите 1
: 1
Введите 2
: 2
Введите 3
: 3
Введите 4
: 4
Введите 5
: 5
Введите 6
:

jeron1

Да, учитывая вашу конструкцию цикла for.

for (i=1; i>=1;++i)

в этот момент "i=1" Вы перепишете введенное пользователем значение (как указал Ричард). Кроме того, я всегда буду больше или равен 1, так что" i >= 1 " на самом деле ничего не делает. Как насчет чего-то вроде
for (int j = 0; j < i; j++)
     {
        //do your stuff
     }

Member 13428864

так это выглядело так?

Максимальное количество входов: 3
Введите 3
: 3
Введите 3
: 3
Введите 3
: 3
Среднее значение: 0.00
--------------------------------
Процесс вышел с возвращаемым значением 0
Нажмите любую клавишу, чтобы продолжить ...

jeron1

Измените оператор for loop внутри цикла for scanf на num, а не i, потому что я не должен меняться после того, как пользователь вводит его (перед циклом for). Возможно, пройдите программу на бумаге, скажем, для 2 чисел, на каждом шаге вычислите, какой будет каждая переменная. Вы можете найти, где лежат ваши проблемы. Или еще лучше, установите точку останова с помощью отладчика и пройдите через код, чтобы увидеть, как меняются значения.

Richard MacCutchan

И еще одна простая ошибка, которую вы можете легко обнаружить, прочитав свой код более внимательно:

scanf("%d",&i);
sum=+num;

Вы читаете число в переменную i а затем попробуйте добавить переменную num к sum.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Ваше использование scanf ошибается по двум пунктам. Во-первых, вы используете тип формата с плавающей запятой для чтения целого числа. Во-вторых, вам нужно указать адрес переменной, а не ее значение. Так что измените его на:

int i; // no point in putting a value here
float num, average, sum;

printf("Maximum num of inputs: ");
scanf("%d",&i);

Вы повторяете это в других местах (легко увидеть). Вы также пытаетесь прочитать дальнейшие значения в переменную i внутри цикла, который использует i как счетчик цикла.