Форум программистов, компьютерный форум CyberForum.ru

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

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

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

03.10.2011, 12:16. Просмотров 464. Ответов 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;} подчеркивает последнее равно че не так???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
03.10.2011, 12:46     одна ошибка по массиву #2
C++
1
2
3
4
5
if (A[i]>0)
{
 kol+=A[i];
 dni+=1;
}
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;}
если ты это имел в виду.
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
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 ведёте
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 (тоесть в первом дне ...
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
03.10.2011, 14:29     одна ошибка по массиву #6
Цитата Сообщение от lexflax Посмотреть сообщение
Ну а где видно что среднее значение еще не расчиталось хоть в одном из выше представленных примеров?
Оно не рассчиталось в вышеприведённом примере от iWord.
Цитата Сообщение от lexflax Посмотреть сообщение
причем заметьте что с 1 включительно тоесть при a[31] - 31 значение
Причем заметьте, при объявлении массива int A[31] максимальный индекс массива - 30, потому что индексы начинаются с 0. Т.е. при обращении к A[31] произойдёт выход за границы массива
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 минуту
или лучше даже >
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
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 значение
Да дело ваше как и где поставить. Я указал на ошибку
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 ( просто у него клюк что после каждого ввода проверяет среднее, но конечный результат у него будет правильным в итоге
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
03.10.2011, 14:48     одна ошибка по массиву #10
Ну вот зачем вы спорите? В вашем коде ошибки при сравнении не было. В этом есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 21:27     одна ошибка по массиву
Еще ссылки по теме:

C++ Ошибка в коде: массиву присваиваются пробелы
C++ Перевести код с Pascal в С++(и там одна ошибка есть)
Перенос массива в функцию и еще одна ошибка C++
Одна ошибка в задаче C++
Ошибка "Bad allocation" при обращении к массиву C++

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

Или воспользуйтесь поиском по форуму:
iWord
10 / 10 / 1
Регистрация: 21.12.2010
Сообщений: 109
03.10.2011, 21:27     одна ошибка по массиву #11
Егегей народ, я алгоритм даже не смотрел, а посто подправил синтаксис.
Yandex
Объявления
03.10.2011, 21:27     одна ошибка по массиву
Ответ Создать тему
Опции темы

Текущее время: 15:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru