Титла: Проблем с компилирането на програма на C++ Публикувано от: Ogg1 в Jun 05, 2011, 20:52 Ползвам Fedora 14 2.6.35.13-91.fc14.i686 #1 SMP Tue May 3 13:36:36 UTC 2011 i686 i686 i386 GNU/Linux
Написал съм една проста програмка на C++, но имам проблем с компилирането. Като я компилирам под Ubuntu няма проблем, но с Fedora не ми смята правилно. Поствам кода за всеки случайл: Код
При самото компилиране няма грешки, но като я изпълня и въведа стойности, изчисленията ми ги прави грешно. Поствам и аутпут от изхода на програмата: Код: # c++ vremeto.cpp Както виждате средната температура за месеца е някакво супер голямо число. Според това което намерих в нета, трябва да си инсталирам "Development Libraries", както и направих, но проблема си остана. Поствам и списък с инталираните ми пакети, които се отнасят за C++ # rpm -qa |grep c++ compat-gcc-34-c++-3.4.6-20.fc14.i686 gcc-objc++-4.5.1-4.fc14.i686 libstdc++-4.5.1-4.fc14.i686 uuid-c++-1.6.2-2.fc14.i686 libsigc++20-devel-2.2.4.2-1.fc12.i686 libsigc++20-2.2.4.2-1.fc12.i686 uuid-c++-devel-1.6.2-2.fc14.i686 gcc-c++-4.5.1-4.fc14.i686 libstdc++-devel-4.5.1-4.fc14.i686 compat-libstdc++-33-3.2.3-68.i686 # rpm -qa |grep gcc compat-gcc-34-c++-3.4.6-20.fc14.i686 gcc-objc++-4.5.1-4.fc14.i686 gcc-c++-4.5.1-4.fc14.i686 gcc-gnat-4.5.1-4.fc14.i686 gcc-gfortran-4.5.1-4.fc14.i686 libgcc-4.5.1-4.fc14.i686 gcc-java-4.5.1-4.fc14.i686 gccxml-0.9.0-0.6.20110211.fc14.i686 compat-gcc-34-3.4.6-20.fc14.i686 gcc-objc-4.5.1-4.fc14.i686 gcc-4.5.1-4.fc14.i686 Инсталирал съм и make и automake, както пишеше в някой сайтове.Дайте идея защо се получава така. П.С. Ако кача променливите преди функцията "int main ()", сметките стават както трябва, но това не ми се струва да е редно :) Титла: Re: Проблем с компилирането на програма на C++ Публикувано от: task_struct в Jun 05, 2011, 21:51 Явно не си зануляваш нещо променливите. Като ги изнесеш пред main, те стават глобални и сами се зануляват, за това тогава ти работи.
Също така излизаш от масивите си: int calc_index = i / dni_za_sredna_stoinost; sredna_stoinost[calc_index] = sum / count; при i >= 28, calc_index е 4 и тогава sredna_stoinost[calc_index] сощи петият елемент на масива ти, а той е 4 елемента. Колкото повече гледам тоя код, толкова повече се чудя как работи въобще. result += m; ???? Това реално е: увеличи result с указателя към масива m. Предполагам имаш впредвид m. cin >> m; и тук би трябвало да е m Титла: Re: Проблем с компилирането на програма на C++ Публикувано от: Ogg1 в Jun 06, 2011, 09:10 Явно не си зануляваш нещо променливите. Като ги изнесеш пред main, те стават глобални и сами се зануляват, за това тогава ти работи. Объркал съм кода при copy-paste. Сега съм постнал кода както трябва :) П.С. Пак да отбележа, че като се компилира под Ubuntu няма никакви проблеми. Дали не е възможно да се получава така заради някоя липстваща библиотека ? Титла: Re: Проблем с компилирането на програма на C++ Публикувано от: b2l в Jun 06, 2011, 09:18 Е дебъгни я де!
Титла: Re: Проблем с компилирането на програма на C++ Публикувано от: Ogg1 в Jun 06, 2011, 11:14 Дебъг:
Във for-а след result += m съм добавил следните редове (проверявам стойностите при вкарването им): Код
Изход от въвеждането на данните: Код: Въведете брой на дни в месеца (между 28 и 31): 30 Титла: Re: Проблем с компилирането на програма на C++ Публикувано от: task_struct в Jun 06, 2011, 12:00 Дали не е възможно да се получава така заради някоя липстваща библиотека ? Ти не ползваш нищо друго освен стандартната библиотека, а тя сама си се включва. Както ти казах не си зануляваш променливите. result никъде не е занулена. Така при първият result += m имаш нещо коеот е седяло в паметта, която result заема и го събираш с 2. За това с глобални променливи ти работи. Титла: Re: Проблем с компилирането на програма на C++ Публикувано от: Ogg1 в Jun 06, 2011, 13:01 Дали не е възможно да се получава така заради някоя липстваща библиотека ? Мерси много. Занулих променливата веднага след като съм я декларирал и сега всичко е ОК. |