20 БАЛЛОВ Найти и объяснить ошибки, допущенные в программе (Ошибок три). int main(){ int...

0 голосов
38 просмотров

20 БАЛЛОВ Найти и объяснить ошибки, допущенные в программе (Ошибок три). int main(){ int n; cin >> n; int a = new int [n]; int S = 0; for(int i = 0; i <= n; i++) cin >> a[i]; S += a[i]; cout << S; return 0; }


Информатика (22 баллов) | 38 просмотров
Дан 1 ответ
0 голосов

int main(){

int n;

cin >> n;

int *a = new int [n]; //1)Здесь должен быть указатель на переменную, т.к. ты не можешь обратиться к области памяти, выделенной через new не через указатель

int S = 0;

for(int i = 0; i < n; i++) { //2)забыты скобки и 3)вместо <= просто <, т.к. индексация в плюсах начинается с нуля</p>

cin >> a[i];

S += a[i];

}

cout

return 0;

}

(438 баллов)
0

И ещё про скобки немного: скобки нужны для того, чтобы строка на стоке S += a[i]; компилятор не выдал ошибку о том, что переменной i в данной области видимости не существует

0

а в качестве третьей ошибки может быть отсутствие delete [] a? просто у меня преподша со скобками сама не дружит

0

Ну, тут смотря как посмотреть. без delete твоя программа запустится и даже корректно завершится. Другое дело, что с теми ошибками, которые я перечислил, она даже не скомпилируется. Т.е. это является ошибкой с точки зрения компилятора. А вот как твоя преподша на это посмотрит, я хз. Я бы доверял тому, что пишет компилятор, больше, чем преподу ;)

0

с эти согласна) просто на всякий случай

0

этим*