Форум «Всё о Паскале» _ Ада и другие языки _ Задача в С++
Автор: sheka 9.07.2009 18:01
Дана примерная таблица-матрица 1 2 (1,2,3,4-это четверти,для ясности) 3 4 1.Сгенерировать матрицу,вывести на экран сумму элементов 3+2 четвертей,методом выборки столбцов 2.Поиск Элементов В каждом столбце заданного элемента,деление пополам.
ругается в scanf("%d",c); - при выполнении до этого места все нормально, а потом вылетает. почему? подскажите пожалуйста.
Автор: volvo 9.07.2009 18:27
Цитата
при выполнении до этого места все нормально, а потом вылетает. почему?
Потому что надо
scanf("%d",&c);
, нужен адрес переменной.
P.S. У тебя вообще программа делает не то, что тебе кажется. В switch-е после каждого case-а должен быть break, чтоб прекратить выполнение этой ветки. У тебя break отсутствует, то есть при вводе 1 или второй четверти:
Большое спасибо, разобрался. Моя первая программа на Си - готова! А говорили с языка на язык переходить "без проблем, там все одинаковое!"
там кавычки еще убрать надо. а почему оно идет дальше??? там же стоит "когда с=3 или 4". в паскале это обрабатывается, а здесь - не понятно!
да, спасибо еще и за ссылку на компилятор, которая была в недавней теме.
Автор: volvo 10.07.2009 4:04
Цитата
а почему оно идет дальше??? там же стоит "когда с=3 или 4". в паскале это обрабатывается
Потому что С и С++ - это не Паскаль.
Цитата(С++ @ Бархатный путь)
Схема выполнения оператора switch
Рассмотрим, наконец, схему выполнения оператора switch:
* вычисляется выражение в круглых скобках после оператора switch (предварительная стадия); * это значение последовательно сравнивается со значениями константных выражений за метками case (стадия определения начальной точки выполнения оператора); * если значения совпадают, управление передаётся соответствующему помеченному оператору (стадия выполнения); * если ни одно значение не совпадает и в теле оператора case есть оператор, помеченный меткой default, управление передаётся этому оператору (но даже в этом случае сочетание объявления с инициализацией недопустимо!) (стадия выполнения); * если ни одно значение не совпадает, и в теле оператора case нет оператора, помеченного меткой default, управление передаётся оператору, следующему за оператором switch (стадия выполнения).
Метки case и default в теле оператора switch используются лишь при начальной проверке, на стадии определения начальной точки выполнения тела оператора. На стадии выполнения все операторы от точки выполнения и до конца тела оператора выполняются независимо от меток, если только какой-нибудь из операторов не передаст управление за пределы оператора выбора. Таким образом, программист сам должен заботиться о выходе из оператора выбора, если это необходимо. Чаще всего для этой цели используется оператор break.