я пока в Си мало разбираюсь....эта строчка как-то связана с тем, что ф-я main возвращает значение или как?
Автор: volvo 17.02.2007 0:59
Цитата
эта строчка как-то связана с тем, что ф-я main возвращает значение или как?
Именно так. Эта строчка нужна для того, чтобы программа соответствовала Стандарту С++, который требует от каждой программы вернуть какое-либо значение. Если эту строчку убрать, то компилятор выдаст предупреждение. Если сделать void main() - то программа вообще не скомпилируется...
Автор: WishMaster 17.02.2007 1:23
Цитата
Если сделать void main() - то программа вообще не скомпилируется...
Разве??? Сколько раз писал
void main() { //здесь код }
и все хорошо шло.И даже работало
Автор: volvo 17.02.2007 2:13
Компилятор, поддерживающий Стандарт как положено - не должен пропускать этот код. Стандартом явно оговорено:
Цитата(Стандарт (3.6.1.2))
An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined.
Все, что "implementation-defined" - есть очень большая вероятность, что будет НЕпереносимо на другие компиляторы, с int будет работать ВЕЗДЕ, ибо должно...
Попробуй
void main() { }
откомпилировать GCC или Интеловским компилятором... Что будет?
Автор: 18192123 17.02.2007 2:51
Цитата(volvo @ 16.02.2007 20:59)
Именно так. Эта строчка нужна для того, чтобы программа соответствовала Стандарту С++, который требует от каждой программы вернуть какое-либо значение. Если эту строчку убрать, то компилятор выдаст предупреждение. Если сделать void main() - то программа вообще не скомпилируется...
а почему в этой строке мы прописываем именно 0? Там может быть другое число? или таков стандарт?
Автор: volvo 17.02.2007 2:57
Может... Это то число, которое ты можешь вернуть в ОС как код завершения... Ноль - потому что обычно в качестве кода нормального завершения передается 0, другие значения - если надо сигнализировать об ошибке...
Автор: 18192123 17.02.2007 3:19
Цитата(volvo @ 16.02.2007 22:57)
Может... Это то число, которое ты можешь вернуть в ОС как код завершения... Ноль - потому что обычно в качестве кода нормального завершения передается 0, другие значения - если надо сигнализировать об ошибке...
спасибо за разъяснение! у меня возник ещё один вопрос. вот у меня в массиве 20 элементов, а как вывести эти значения на экран в таком виде: x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 если ввожу я эти элементы следующим образом:
int A[NUM],i; printf ("введите 20 целых чисел:" ); for (i = 0; i < NUM; i++) { printf ("%d-ое число --> ", i); scanf ("%d", &A[i]); }
18192123, это такая форма записи условного оператора. Вместо
if(a == b) c; else d;
можно написать:
(a == b) ? c : d;
Следовательно, эта строка просто печатает пустой символ (ничего не печатает), если остаток от деления текущего индекса + 1 на пять ненулевой (то есть, есть увеличенный на 1 индекс не кратен 5), а если остаток - ноль (индекс кратен 5), то печатается символ "\n" - перевод строки...
Автор: 18192123 20.03.2007 2:03
Оказалось, что с соседствами оказалось всё намного проще... нужно было подсчитать количество соседств 2-х положительных и отдельно 2-х отрицательных. например, 4 5 -5 -5 4 1 1 1 -8 -9 4 -4 -4 5 5 2 -4 -5 1 2 здесь кол-во соседств 2-х положительных 7, отрицательных 4. вот программа:
#include <STDIO.H> #define NUM 20 void main() { int a[NUM],i; printf ("Vvedite 20 chelih 4isel :\n" ); for (i = 0; i < NUM; i++) { printf ("%d-oe 4islo --> ", i); scanf ("%d", &a[i]); }
int count, count1; for( i = 0, count = 0, count1 = 0; i < NUM ; i++) {
if ((a[i] > 0) && (a[i+1] > 0)) count+=1; if ((a[i] < 0) && (a[i+1] < 0)) count1+=1;
} printf ("In this massiv \n"); for(i = 0; i < NUM; ++i)
printf(" %3d%s", a[i], ((i + 1)%5) ? "" : "\n");
printf("Kolichestvo sosedstv 2-h polositel'nih elementov = %d\n", count); printf ("Kolichestvo sosedstv 2-h otricatel'nih elementov = %d\n", count1);
}
но работает несовсем корректно: чаще выдаёт верное количество , но бывает и неправильный результат, например в верхнем массиме программа выдаёт 8 соседств положительных вместо правильных 7.... В чём же дело?
Автор: Fanat 22.03.2007 4:03
Цитата(18192123 @ 19.03.2007 22:03)
for( i = 0, count = 0, count1 = 0; i < NUM-1 ; i++)
-1...так как последний элемент может образовывать пару только с предыдущим...
Автор: atraides 12.04.2007 13:57
To 18192123 Случаем не на ИИТУСе учишся) какая группа?
Памагите мне разобраться с подобной задачей у я по проще но чтото не получается
Задан целочисленный массив Х из 20 элементов. Из этого массива переписать в массив Y подряд все положительные элементы и определить наименьший из них.
Автор: мисс_граффити 12.04.2007 14:12
М
незачем использовать чужую тему. новая задача - новая тема