Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сумма 2мерного массива, Че-то ни то... 
:(
    Опции темы
Wild
  Дата 20.11.2004, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.10.2004

Репутация: нет
Всего: нет



При подсчете суммы элементов 2мерного массива, она оказалась
ОТРИЦАТЕЛЬНОЙ! Как такое возможно?(все элементы в массиве были положительными, целого типа ). smile
PM MAIL   Вверх
Pakshin A. S.
Дата 20.11.2004, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Как там говорится... ОШИБКА В 17 СТРОКЕ... КОД сюды!!!
PM   Вверх
bel_nikita
Дата 20.11.2004, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Wild
А сумма какого типа? Вывод суммы как осуществляется? Через %d?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
_hunter
Дата 20.11.2004, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



если под целым типом подразумевается "целое, знаковое" то скорее всего переполнение прошло ( это если в коде ошибок нет )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Artiom
Дата 20.11.2004, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: нет
Всего: 17



Переменная, в которую писалась сумма не была инициализирована нулем.


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
Wild
Дата 21.11.2004, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.10.2004

Репутация: нет
Всего: нет



Да, через %d.

Добавлено @ 13:55
Код

#include<stdio.h>
#include<conio.h>
#include<iostream>
extern int summa(const int nstr, const int nstb);
int main()
{
   const int nstr = 5;
   const int nstb = 5;
   int i,j,a[nstr][nstb];
   for (i=0;i<nstr;i++)
   for (i=0;i<nstr;i++){
         printf(" \n");
       for (j=0;j<nstb;j++){
               a[i][j] = rand();
               printf(" %d",a[i][j]);
       }
   }        
             printf(" \nSumma elementov 2mernovo massiva : %d\n ",summa(nstr,nstb));
      _getch();            
   }
   int summa(const int nstr, const int nstb )
   {
       int i,j,s;
       int a[nstr][nstb];
       for (i=0;i<nstr;i++ ){
           for (j=0;j<nstb;j++){
               s+=a[i][j];
           }
       }
       return s;        
       }

PM MAIL   Вверх
bel_nikita
Дата 21.11.2004, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Wild
а пример разве компилится? мне кажется, что нет smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 21.11.2004, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Код

// на самом деле пофиг какая размерность массива, двух-трех мерный. в памяти лежит все последовательно, поэтому нужно занть адрес начала массива и количество его всех элементов
int summa(const int* array, int size )
{
 int s = 0;

 for (int i=0; i<size; i++ )
   s+=array[i];
 
return s;
}

const int nstr = 5;
const int nstb = 5;

int main(int argc, char* argv[])
{
 int a[nstr][nstb];
 for (int i=0;i<nstr;i++)
 {
  printf(" \n");
  for (int j=0;j<nstb;j++)
  {
   a[i][j] = rand();
   printf(" %d",a[i][j]);
  }
 }
 printf(" \nSumma elementov 2mernovo massiva : %d\n ", summa(&a[0][0],sizeof(a)/sizeof(a[0][0])) );
}


sizeof(a) / sizeof(a[0][0]) - определение кол-ва элементов в массиве


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Wild
Дата 21.11.2004, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.10.2004

Репутация: нет
Всего: нет



Компилится (DEV-C++).
Добавлено @ 19:51
А скажите, пожалуйста, DEV-C++ нормальная штука, или лучше WatCom, или Borland C++?
PM MAIL   Вверх
bel_nikita
Дата 22.11.2004, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Wild
Цитата
А скажите, пожалуйста, DEV-C++ нормальная штука, или лучше WatCom, или Borland C++?
Сложный вопрос smile То же самое, что вкуснее: яблоко или груша?

З.Ы.: Нормально, но лучше MSVC 7.1 smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Wild
Дата 23.11.2004, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.10.2004

Репутация: нет
Всего: нет



А где взять лицензионную версию (бесплатно конечно) не подскажешь? smile
PM MAIL   Вверх
_hunter
Дата 23.11.2004, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Цитата
лицензионную версию (бесплатно

такого не бывает
копия ( восьми-дисковая продается у нас на радиорынке )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
bel_nikita
Дата 24.11.2004, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата
А где взять лицензионную версию (бесплатно конечно) не подскажешь

MSVC 7.1 - не знаю
Можно бета версию Visual C++ 2005 скачасть с сайта Микрософта
Вот, еще: Intel Compiler
Да, вообще этих компиляторов полно. Лучше послушай совет _huntersmile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 25.11.2004, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Одним словом "Инициализация"

Когда создаешь переменную система лишь выделяет память, но не отвечает за то что по этому адресу написано...
Всегда делан int s = 0;
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.