Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 19:55   #1
lerenia
Пользователь
 
Регистрация: 17.10.2012
Сообщений: 13
По умолчанию Наибольшее четное

С клавиатуры вводится последовательность целых чисел. Определить наибольшее среди четных чисел. Признак конца ввода - 0

Среди положительных чисел у меня все нормально, а вот если вводить: 3,7,-4,-2 0 выводится 0(( а должно вывестись -2

Код:
# include <stdio.h>
# include <conio.h>
# include <locale.h>
# include <math.h>
int main()
{ 
	setlocale(LC_CTYPE, "");
	int k,l,max;
	l=0;
	printf("Введите цифры");
	do 
	{ 
	  scanf("%i", &k);
	  
	  if ((k%2)==0)
	  { l=1;
	  max=k;
	 if (l)
	 {
	  if (max<k)
		  { max=k; }
	 }}
	}	
	while (k!=0);
	printf("Максимальное четное число=%i",max);
	
	getch();
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.04.2013 в 11:03.
lerenia вне форума Ответить с цитированием
Старый 16.04.2013, 20:03   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Соль в том что Вы сначала используете число, а только затем проверяете не пора ли выйти из цикла?.
(Как это исправить - я без понятия (с С++ не знаком))

Цитата:
Poma][a, это Си, а не С++ (для общего развития).
Это не китайский! Это японский! (Разницы не вижу) Но за моё общее развитие спасибо! (не дает + поставить.. изверг..)

Последний раз редактировалось Poma][a; 16.04.2013 в 20:47.
Poma][a вне форума Ответить с цитированием
Старый 16.04.2013, 20:34   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>

int
main()
{
    setlocale(LC_CTYPE, "");
    int k, l = 0, max;
    printf("Введите числа ");
    do { 
        scanf("%d", &k);
        if (k && !(k % 2)) {
            if (l && k > max) {
                max = k;
            } else {
                l = 1;
                max = k;
            }
        }
    }
    while (k);
    if (l)
        printf("Максимальное четное число = %d\n", max);
    else
        printf("Нету =)\n");
    getch();
    return 0;
}
Не забывайте про кнопочку Решетка # для оформления кода.

Poma][a, это Си, а не С++ (для общего развития).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 16.04.2013 в 20:37.
BDA вне форума Ответить с цитированием
Старый 16.04.2013, 20:44   #4
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Проблема в том, что число 0 - четное. Нужно использовать другой способ выхода. (например, тут выход по вводу числа "99999")

Вот например, слегка переделал(мда, мой вариант так себе :DD):
Код:
# include <stdio.h>
# include <conio.h>
# include <locale.h>
# include <math.h>


int main()
{
	setlocale(LC_CTYPE, "");
	int k,max=0;
	printf("Введите цифры (99999 - конец ввода): ");
	do
	{
		scanf("%i", &k);
		if (max==0) max=k;
		if ((k%2)==0)
		{
			if (max<k) max=k;
		}
	}

	while (k!=99999);
	printf("Максимальное четное число = %i",max);
	getch();
}
И пишите в следующий раз в тегах [CОDE] [/CОDE], и оформляйте код более читабельным, с пробелами.

Последний раз редактировалось Ghost3; 16.04.2013 в 20:55.
Ghost3 вне форума Ответить с цитированием
Старый 16.04.2013, 21:01   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Проблема в том, что число 0 - четное. Нужно использовать другой способ выхода. (например, тут выход по вводу числа "99999")
Это читается как "так задача слишком сложная, поменяйте условие". Разумность совета... сомнительна.
Abstraction вне форума Ответить с цитированием
Старый 16.04.2013, 21:08   #6
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Ну почему сомнительна? Если до ввода нуля все четные числа были отрицательны, то при вводе нуля (попытка завершить ввод) программа выдаст 0, т.к. 0 четное и больше всех нечетных.
99999 - число нечетное, прога даже "думать о ней не будет".
Ghost3 вне форума Ответить с цитированием
Старый 16.04.2013, 21:11   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Ghost3, приходите Вы на работу. Вам говорят: "Пиши прошивку для спутника". А Вы: "Не-не-не, лучше башорг буду парсить". (Утрированно)

Задача поставлена так, как она поставлена. ТС же не сам условия придумывает.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.04.2013, 21:16   #8
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Ааа, врулил. Просто по оформлению темы не понял, где условие задачи и где "жалоба на прогу" :D
Не люблю такие оформления сообщений.

А тогда получается, что никогда 0 не будет во вводимых данных (кроме как завершения чтения)?
Ghost3 вне форума Ответить с цитированием
Старый 16.04.2013, 21:18   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А тогда получается, что никогда 0 не будет во вводимых данных (кроме как завершения чтения)?
Именно! ( )
Poma][a вне форума Ответить с цитированием
Старый 16.04.2013, 21:22   #10
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Тогда так:
Код:
# include <stdio.h>
# include <conio.h>
# include <locale.h>
# include <math.h>


int main()
{
	setlocale(LC_CTYPE, "");
	int k,max=0;
	printf("Введите цифры (0 - конец ввода): ");
	do
	{
		scanf("%i", &k);
		if (max==0) max=k;
		if (((k%2)==0) && (k!=0))
		{
			if (max<k) max=k;
		}
	}

	while (k!=0);
	printf("Максимальное четное число = %i",max);
	getch();
}
Ghost3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Четное или нечетное число turtles Общие вопросы по Java, Java SE, Kotlin 3 25.08.2011 08:54
Дано число a. Как определить, четное оно, или нечетное? pahanzona Общие вопросы Delphi 5 09.03.2011 12:49
Из 6-ти заданных чисел найти максимум и минимума с указанием четное оно или нечетное [Паскаль] Gevorg7 Помощь студентам 2 12.12.2010 21:59
Дана матрица n*n (n - четное) Proxx-asb Помощь студентам 8 03.11.2010 16:12
Построить массив q с индексам ij = i+j; если j – четное и i>3 НАСТЯ 18:) Помощь студентам 5 12.05.2009 22:56