Форум программистов, компьютерный форум CyberForum.ru

Найти в массиве максимальное значение среди чисел, не кратных 9 - C++

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
06.04.2014, 13:10     Найти в массиве максимальное значение среди чисел, не кратных 9 #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h> 
#define N 3 
void main() 
{ 
int a[N]; 
int i, j, max; 
for (i = 0; i<N; i++) 
scanf("% d", &a[i]);
max = 0; j = 0;
for(i=0; i<N; i++)
{
    if (a[i]%9!=0 && a[i]>99 && a[i]<1000)
    {
        if (max < a[i]) 
            {
                max = a[i];
                j++;
            }
    }
}
if (j == 0) printf("Не найдено!");
else printf("%d",max);
}
Я уже весь просмотрел, и не могу понять, почему j всегда равно нулю? Все условия верны, даже при присвоении j значения в начале отличного от нуля, все равно выводит 0. Это магия просто какая то. Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2014, 13:10     Найти в массиве максимальное значение среди чисел, не кратных 9
Посмотрите здесь:

C++ Среди заданных целых чисел k,l,m найти пары кратных
C++ Среди простых чисел найти найти такое, в двоичной записи которого максимальное число единиц.
Дана матрица, найти максимальное значение среди минимальных по строкам. C++
C++ Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных.
C++ Найти минимальное число среди положительных чисел и максимальное число среди отрицательных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
06.04.2014, 13:21     Найти в массиве максимальное значение среди чисел, не кратных 9 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
 
#define N 3
 
int main() {
    int a[ N ];
    int i, j, max;
 
    for ( i = 0; i < N; i++ )
        scanf( "%d", &a[ i ] ); // убрать пробел % d
 
    max = 0;
    j = 0;
    for ( i = 0; i < N; i++ ) {
        if ( a[ i ] % 9 != 0 && a[ i ] > 99 && a[ i ] < 1000 ) {
            if ( max < a[ i ] ) {
                max = a[ i ];
                j++;
            }
        }
    }
    if ( j == 0 )
        printf( "Не найдено!" );
    else
        printf( "%d", max );
}
Результат работы
100 200 900
200
И это раздел C++ а не C. Выбирайте пожалуйста для темы соответствующий раздел.
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
06.04.2014, 13:27     Найти в массиве максимальное значение среди чисел, не кратных 9 #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Это магия просто какая то.
Если ты распечатаешь введенные числа, можно попробовать расколдовать...
Попробуй в 12-й строчке написать
C++
1
if ((a[i]%9)!=0 && a[i]>99 && a[i]<1000)
чтоб не грешить на приоритеты...
А печать a[i] хорошо поставить в начало внешнего цикла
И общий совет: для анализа странного поведения программы вставляй печать промежуточных результатов. Если этих результатов получается много, перенаправь вывод в файл
proga.exe >file

Добавлено через 2 минуты
В строчке 8 между процентом и d пробел
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
06.04.2014, 13:34  [ТС]     Найти в массиве максимальное значение среди чисел, не кратных 9 #4
BlackSpace, а что собственно изменилось в вашей программе? Не могу понять, кроме того, что вы более удобно расставили пробелы и переносы строки.
Байт, я везде ставил j++ в каждое место программы - в цикл сам вставлял перед условиями, в каждое условие вставлял, даже ЗА цикл, и ничего не изменилось, j == 0 всегда. В 8 строчке пробел я сам удивился - но так написано было в задании ЕГЭ С2.
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
06.04.2014, 13:35     Найти в массиве максимальное значение среди чисел, не кратных 9 #5
CHELOVEKPAUK, смотрите комментарий в программе
Цитата Сообщение от BlackSpace Посмотреть сообщение
scanf( "%d", &a[ i ] ); // убрать пробел % d
Программа написана верно - я даже результат работы программы привел. Дело только в пробеле.
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
06.04.2014, 13:35  [ТС]     Найти в массиве максимальное значение среди чисел, не кратных 9 #6
Байт, да, действительно, проблема в приоритетах была.
А нет, не только приоритет, и без скобок тоже работает со scanf. Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 13:42     Найти в массиве максимальное значение среди чисел, не кратных 9
Еще ссылки по теме:

C++ Найти максимальное значение среди разрядов целого числа a
Матрицы. Найти максимальное значение среди буквенных символов и минимальное среди цифровых значений C++
Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
06.04.2014, 13:42     Найти в массиве максимальное значение среди чисел, не кратных 9 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В строке
C
1
2
3
...
if ( a[ i ] % 9 != 0 && a[ i ] > 99 && a[ i ] < 1000 );
...
проблем с приоритетами нет.
Все работает так как ожидается.

Проблема было только в строке
C
1
2
3
...
scanf( "%d", &a[ i ] ); // из-за пробела между % и d
...
Yandex
Объявления
06.04.2014, 13:42     Найти в массиве максимальное значение среди чисел, не кратных 9
Ответ Создать тему
Опции темы

Текущее время: 14:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru