Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
#1

одна ошибка по массиву - C++

03.10.2011, 12:16. Просмотров 487. Ответов 10
Метки нет (Все метки)

программа по выяснению дня в котором осадко выпало больше нормы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
main ()
{int kol=0;int dni=0;int A[31],n;float sr;
cout << "vvedite kolichestvo dnei v mesace "; cin >> n;
for (int i = 1; i <= n; i++)
{cout << " vvedite colichestvo osadkov v " << i << " dne " ;
cin >> A[i];
if (A[i]>0) kol+=A[i] && dni+=1;}
sr=kol/dni;
for (int i = 1; i <= n; i++)
{if (A[i]>sr) cout << " v " << i << "dne privihenie osadkov na " << A[i]-sr;
}
getch();}
Запускаю на билдере выдает такую ошибку [C++ Error] Unit4.cpp(17): E2277 Lvalue required подчеркивает равно в строчке if (A[i]>0) kol+=A[i] && dni+=1;} подчеркивает последнее равно че не так???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 12:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос одна ошибка по массиву (C++):

ошибка в обращение к массиву - C++
Можете подсказать почему у меня выдает ошибки на строках Mas=(i*z*y+j*z+k); и cout &lt;&lt;Mas&lt;&lt;&quot;/t&quot;; в коде, я же вроде бы не...

Ошибка в коде: массиву присваиваются пробелы - C++
Господа, массиву massiv massiv присваиваются пробелы, хотя по условию не должны. Помогите разобраться. Спасибо. ...

Ошибка при присваивании массиву char значения - C++
В общем, требуется присвоить массиву чаров одно из нескольких значений (в зависимости от значения аргумента функции) и вывести этот массив...

Одна ошибка - C++
#include&lt;iostream&gt; using namespace std; int max_elem(int **mas, int n); int main(void); { int i, j, temp; mas=new int*; ...

Одна ошибка в stl - C++
не компилируется что не так? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace...

Одна ошибка в задаче - C++
Задача: Дан текстовый файл. Переписать его текст в новый файл таким образом, чтобы каждое предложение начиналось с новой строки и между...

10
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
03.10.2011, 12:46 #2
C++
1
2
3
4
5
if (A[i]>0)
{
 kol+=A[i];
 dni+=1;
}
0
iWord
10 / 10 / 1
Регистрация: 21.12.2010
Сообщений: 109
03.10.2011, 12:55 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <locale>
#include <cmath>
 
using namespace std;
 
main (){
    setlocale(LC_ALL," ");
    int kol=0;
    int dni=0;
    int A[31],days;
    float srednee;
        cout << "Введите количество дней для наблюдения "; 
        cin >> days;
        
        for (int i = 1; i <= days; i++){
            cout << " Введите количество осадков в " << i << "-й день \n" ;
        cin >> A[i];
        if (A[i]>0){ kol+=A[i];
        dni+=1;}
        srednee=kol/dni;
        
        if (A[i]>srednee) 
            {
            cout << " На " << i << "-й привышение осадков на  " << A[i]-srednee<< "\n";        
        }
        }
        cin.get();
        cin.get();
        cin.get();
}
Вот посмотри , но в самой сути поиска сомневаюсь. И если только начал изучать язык программирования , то старайся писать аккуратно , что бы сам мог увидеть ошибку.

C++
1
2
3
if (A[i]>0){ 
kol+=A[i] ;
dni+=1;}
если ты это имел в виду.
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
03.10.2011, 13:10 #4
Цитата Сообщение от iWord Посмотреть сообщение
но в самой сути поиска сомневаюсь.
И правильно, что сомневаетесь. В вашей версии среднее значение еще не успело рассчитаться, а вы уже с ним сравниваете.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
main ()
{
 int kol=0; int A[31], n; float sr;
 cout << "vvedite kolichestvo dnei v mesace ";
 cin >> n;
 for (int i = 1; i <= n; i++)
 {
  cout << " vvedite colichestvo osadkov v " << i << " dne " ;
  cin >> A[i];
  if (A[i]>0) kol+=A[i];
 }
 sr=(float)kol/(float)n;
 for (int i = 1; i <= n; i++)
 {
  if (A[i]>sr) cout << " v " << i << " dne privihenie osadkov na " << A[i]-sr << endl;
 }
 getch();
}
Добавлено через 12 минут
Цитата Сообщение от mimicria Посмотреть сообщение
int A[31]
и int A[32] тогда, раз уж вы счёт с 1 ведёте
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
03.10.2011, 14:25  [ТС] #5
Цитата Сообщение от mimicria Посмотреть сообщение
И правильно, что сомневаетесь. В вашей версии среднее значение еще не успело рассчитаться, а вы уже с ним сравниваете.

и int A[32] тогда, раз уж вы счёт с 1 ведёте
Ну а где видно что среднее значение еще не расчиталось хоть в одном из выше представленных примеров? среднее значение высщитывалось за телом цикла, а в теле цикла было выяснить количество дней в котором были осадки и сумму всех осадков, а уже потом в не теле цикла вычисляется значение среднего и сравнивается, а что касается А[32] раз уж я счет виду с 1 причем заметьте что с 1 включительно тоесть при a[31] - 31 значение а не 30 а при a[32]- 32 значения об этом говорит даже строка cout << "vvedite osadki v << i << dne (тоесть в первом дне ...
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
03.10.2011, 14:29 #6
Цитата Сообщение от lexflax Посмотреть сообщение
Ну а где видно что среднее значение еще не расчиталось хоть в одном из выше представленных примеров?
Оно не рассчиталось в вышеприведённом примере от iWord.
Цитата Сообщение от lexflax Посмотреть сообщение
причем заметьте что с 1 включительно тоесть при a[31] - 31 значение
Причем заметьте, при объявлении массива int A[31] максимальный индекс массива - 30, потому что индексы начинаются с 0. Т.е. при обращении к A[31] произойдёт выход за границы массива
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
03.10.2011, 14:35  [ТС] #7
Цитата Сообщение от mimicria Посмотреть сообщение
Оно не рассчиталось в вышеприведённом примере от iWord.
Я запускал его пример и он работает без ошибок...
Цитата Сообщение от mimicria Посмотреть сообщение
Причем заметьте, при объявлении массива int A[31] максимальный индекс массива - 30, потому что индексы начинаются с 0. Т.е. при обращении к A[31] произойдёт выход за границы массива
ну тут тогда просто в цикле условие поставить не < n , а == тогда будет 31 значение

Добавлено через 1 минуту
или лучше даже >
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
03.10.2011, 14:38 #8
Цитата Сообщение от lexflax Посмотреть сообщение
Я запускал его пример и он работает без ошибок...
Давайте разберём по строчкам
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 1; i <= days; i++) // начался цикл
{
        cout << " Введите количество осадков в " << i << "-й день \n" ;
        cin >> A[i]; // Допустим, у нас первый день
        if (A[i]>0) // Ввели 5
        { 
         kol+=A[i]; // кол стал 5
         dni+=1; // дни 1
        }
        srednee=kol/dni; // среднее 5
        if (A[i]>srednee) // тут же сравнили 5 со средним 5
       /* это по-вашему правильно? */
Цитата Сообщение от lexflax Посмотреть сообщение
ну тут тогда просто в цикле условие поставить не < n , а == тогда будет 31 значение
Да дело ваше как и где поставить. Я указал на ошибку
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
03.10.2011, 14:44  [ТС] #9
Цитата Сообщение от mimicria Посмотреть сообщение
Давайте разберём по строчкам
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 1; i <= days; i++) // начался цикл
{
        cout << " Введите количество осадков в " << i << "-й день \n" ;
        cin >> A[i]; // Допустим, у нас первый день,допустим во второй еще
        if (A[i]>0) // Ввели 5 ввели еще 3
        { 
         kol+=A[i]; // кол стал 5 +3=8
         dni+=1; // дни 1+1=2
        }
        srednee=kol/dni; // среднее 4
        if (A[i]>srednee) // тут же сравнили 5 со средним 5 ( просто у него клюк что после каждого ввода проверяет среднее, но конечный результат у него будет правильным в итоге
       /* это по-вашему правильно? */
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i <= days; i++) // начался цикл
{
        cout << " Введите количество осадков в " << i << "-й день \n" ;
        cin >> A[i]; // Допустим, у нас первый день,допустим во второй еще
        if (A[i]>0) // Ввели 5 ввели еще 3
        { 
         kol+=A[i]; // кол стал 5 +3=8
         dni+=1; // дни 1+1=2
        }
        srednee=kol/dni; // среднее 4
        if (A[i]>srednee) // тут же сравнили 5 со средним 5 ( просто у него клюк что после каждого ввода проверяет среднее, но конечный результат у него будет правильным в итоге
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
03.10.2011, 14:48 #10
Ну вот зачем вы спорите? В вашем коде ошибки при сравнении не было. В этом есть.
0
iWord
10 / 10 / 1
Регистрация: 21.12.2010
Сообщений: 109
03.10.2011, 21:27 #11
Егегей народ, я алгоритм даже не смотрел, а посто подправил синтаксис.
0
03.10.2011, 21:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 21:27
Привет! Вот еще темы с ответами:

Одна ошибка в двомерном массиве - C++
Здраствуйте помогите найти исправить ошибку. Сформировать квадратную матрицу действительных чисел. Количество строк и столбцов ввести с ...

Структура абитуриент, осталась одна ошибка - C++
1. Структура &quot;Абитуриент&quot;: - фамилия, имя, отчество; - год рождения; - оценки вступительных экзаменов (3); - средний балл...

Перенос массива в функцию и еще одна ошибка - C++
#include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; int findDet3(int matrix); int main() { ...

Перевести код с Pascal в С++(и там одна ошибка есть) - C++
Program lab; var s,p,q,n,i: integer; begin s:=1; p:=0; q:=0; for i:=1 to n do begin p:=p+cos(i:real);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.