|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.02.2021, 11:22 | #1 |
Пользователь
Регистрация: 24.02.2021
Сообщений: 18
|
Программа на C++. Одномерные массивы.
Добрый день!
Была дана задача: даны целые числа а1...аn. Известно, что среди них есть отрицательные. Пусть, это число an и элементы a(n+1), a(n+2),...,am - элементы последовательности стоящие после отрицательного числа. Вычислить сумму квадратов элементов последовательности стоящих после отрицательного числа. Т.е для начала нужно найти отрицательный элемент, а затем выполнить сумму. Моя программа выглядит так: #include <iostream> # include <math.h> using namespace std; int main() {int const m=10; float a[m+1]; cout<<"Enter"<<m<<"numbers"<<endl; for(int i=0; i<=m; i++) cin>>a[i]; int S=0; int k=0; for(int k=0; k<=m; k++) if(a[k]<0) cout<<" negative item received k="<<endl; for(int k=0;k<=m; k++) S+=a[k]*a[k]; cout<<"S="<<S<<endl; return 0;} Я не могу понять, где моя ошибка. Пожалуйста, можете помочь? |
24.02.2021, 12:06 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
Первая ошибка - прежде чем постить в форум, надо прочитать правила. И там сказано, как надо представлять исходник. Вот так (применить тег CODE).
Код:
А если так? Код:
Последний раз редактировалось digitalis; 24.02.2021 в 12:19. |
24.02.2021, 22:17 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Код:
Думаю, что изложенный алгоритм поможет разобраться. Одна из ошибок заключается в том, что переменная, описанная в программе, и переменная, описанная в заголовке цикла - это разные переменные. Переменная, описанная в заголовке цикла не должна быть видна вне цикла. По этой причине в моём примере все переменные циклов - i. PSS: Полагаю, что вычислять надо после последнего найденного отрицательного числа. Если вычислять от первого найденного числа, то поиск отрицательного числа и вычисление можно совместить в одном цикле: - создаём переменную логического типа, например, flag со значением false; - в цикле, при нахождении первого отрицательного элемента, flag = true; - в теле цикла предусматриваем условие: Код:
Программа даже не компилировалась. Разбирайтесь.
Как-то так, ...
|
25.02.2021, 11:43 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
Согласен. Мой косяк. Попробовал в Delphi - не компильнулось, выдала ошибку. Ещё когда изучали Алгол-60 в прошлом тысячелетии, нас об этом предупреждали. Впрочем, видимо, это зависит от реализации - в Fortran IV вроде проходило. Не говоря уж за ассемблер Но конечно - единичные исключения не дают права нарушать правило.
|
25.02.2021, 18:32 | #5 | ||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Цитата:
Цитата:
В Delphi и вообще, в Pascal, переменные описываются в специальной области после волшебного слова var. Там нельзя описать переменную абы где. В Си переменная описывается указанием типа перед её именем и может быть описана в выделенном блоке кода [тут мне сложно объяснить, поскольку пишу по памяти, а лезть в Сеть в лом]. Т.е., например, выражение: Код:
При этом область видимости этой переменной - тело цикла. Это как описание переменных функции. Деталей реализации не знаю, но думаю, что такая переменная создаётся в стеке. Вместе с тем, если переменную описать вне тела цикла, например: Код:
PS: Насколько помню, и в Си и в Паскале можно описать переменную в теле функции, но такая переменная будет создана в сегменте данных и будет сохраняться между вызовами. Пример: Код:
Как-то так, ...
|
||
03.03.2021, 14:47 | #6 |
Пользователь
Регистрация: 24.02.2021
Сообщений: 18
|
ViktorR, Добрый день! с флагом мы еще не работали, поэтому я не совсем могу понять как выполнить данную задачу. Есть альтернативный путь? Будьте так добры
|
03.03.2021, 15:03 | #7 |
Форумчанин
Регистрация: 16.11.2020
Сообщений: 243
|
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа в С++(одномерные массивы) | Dr Vikt | Помощь студентам | 0 | 22.12.2012 21:58 |
Одномерные массивы, двумерные массивы, строки | Sand093 | C++ Builder | 11 | 20.05.2012 21:48 |
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент | LyaLya | Помощь студентам | 15 | 20.12.2009 14:12 |
Программа на одномерные массивы | Ekatharina | Помощь студентам | 8 | 30.06.2009 21:20 |