albel
Moderator | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Heinz для Cpp не уверен, что смогу помочь. Но с точки зрения Си этот блок неверен: Код: float sum(float mas[],int n) { for (int i=n;i>=0;i--) if (mas[i]>0) break; float sm=0; for (int j=0;j<i;j++) sm+=mas[j]; return sm; } | т.к. область видимости переменной i заканчивается при выходе из первого FOR; кроме того, стандартом Си значение переменной счётчика после выхода из счётчика не определено! В любом случае, эта функция не решает задачу Цитата: вычислить сумму элементов массива, расположенных до последнего положительного элемента; | Корректнее так: Код: float sum(float mas[],int n) { float sm=0; int i, j, num; for (i=n;i>=0;i--) { if (mas[i]>0) { num = i; break; } } for (j=0;j<num;j++) sm+=mas[j]; return sm; } | у вас там ещё несколько ошибок, посмотрю текст целиком, как времени больше будет. В частности, на тему ручного ввода - из той же серии: Код: f (yn=='y') { printf("vvedite kol-vo el-tov (0,%d)\n->",max); int m=0; res=scanf("%d",&m); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } ...................... n->",i); res=scanf("%f",&mas[i]); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } } } .............дальше printf по выводу элементов массива | здесь вы локально переопределяете переменную m, после выхода из блока, т.е. после последней указанной фигурной скобки локальная переменная m исчезает, вступает в действие определение, данное в начале функции main, где написано, что m=0, поэтому printf не работает (т.е.ничего не печатает). Соответственно, не работают правильно все функции, куда вы передаёте m. Аккуратнее с областями видимости. | Всего записей: 11003 | Зарегистр. 30-08-2002 | Отправлено: 14:02 03-09-2006 | Исправлено: albel, 14:04 03-09-2006 |
|