Member 13348311 Ответов: 2

Программирование на языке C вопрос пожалуйста скажите мне правильный ответ


Вам дается последовательность целых чисел в качестве входных данных, заканчивающаяся
-1. (то есть входные целые числа могут быть положительными, отрицательными или 0. A -1
во входных сигналах конец входного сигнала.)

-1 не рассматривается как часть входных данных.

Найдите второе по величине число во входных данных. Вы не можете использовать массивы.

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

#include<stdio.h>
int main()
{
	int prev,curr; /* prev means previous number and curr means current number */
	int lar=0,seclar=0; /* lar means largest number and seclar means second largest number */
	printf("Enter the number:\t");
	scanf("%d",&prev);
	if( !(prev == -1))
	{
		scanf("%d",&curr);
		while( !(curr == -1))
		{
			if(prev< curr)
			{
				lar=curr;
				seclar = prev;
			}
			else
			{
			    if(seclar < curr)
			{
					
				seclar = prev;
		    }
			}
			prev = curr;
			scanf("%d", &curr);
		}
	}
 printf("%d\n",lar);
 printf("%d",seclar);
 return 0;
}

Kornfeld Eliyahu Peter

Я сделаю это, если вы скажете мне, что не так с вашим решением...

Patrice T

В чем проблема ?

2 Ответов

Рейтинг:
2

OriginalGriff

Простой.
Имейте два "максимальных" значения max и secondMax Установите оба значения на наибольшее отрицательное число, которое вы можете поместить в целое число. Внутри вашего цикла проверьте каждое входное значение на соответствие max - он больше, сет secondMax к max, затем создать max к новому значению.
Если это не так, проверьте это против secondMax - если он больше, сет secondMax к новому значению.
После цикла, secondMax имеет ту ценность, которую вы хотите.

Но это твое домашнее задание, так что я не дам тебе никакого кода!


Рейтинг:
0

Patrice T

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.