Ползвам 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 не ми смята правилно.
Поствам кода за всеки случайл:
GeSHi (C++):
#include <iostream>
using namespace std;
int main() {
int m[30];
int dni, result;
do {
cout << "Въведете брой на дни в месеца (между 28 и 31): ";
cin >> dni;
} while ( dni < 28 || dni > 31 );
int min, max; // мин и макс температура
int sum, count, sredna_stoinost[4], dni_za_sredna_stoinost;
dni_za_sredna_stoinost = 7;
sum = 0;
count = 0;
for ( int i=0; i < dni; i++ ) {
do {
cout << "Въведете температура за ден номер " << i+1 << ": ";
cin >> m[i];
} while ( m[i] < -100 || m[i] > 100 );
result += m[i];
sum += m[i];
count++;
//смятане средна стойност за дните от месеца
if ( ! ( ( i + 1 ) % dni_za_sredna_stoinost ) || ( i == ( dni - 1 ) ) ) {
int calc_index = i / dni_za_sredna_stoinost;
sredna_stoinost[calc_index] = sum / count;
sum = 0;
count = 0;
}
//Ако нямат стойност мин и макс т.е. на първия ден от седмицата се присвояват и двата на първия ден
if ( i == 0 ) {
min = m[i];
max = m[i];
} else {
if ( m[i] < min ) {
min = m[i];
}
if ( m[i] > max ) {
max = m[i];
}
}
}
int sw;
do {
cout << "\n==============================================\n";
cout << "==================== MENU ====================\n";
cout << "==============================================\n";
cout << "1) Средна стойност за месеца.\n";
cout << "2) Средна стоиност за седмиците от месеца.\n";
cout << "3) Минимална температура за месеца.\n";
cout << "4) Максимална температура за месеца.\n";
cout << "5) Exit" << endl;
cout << "Изберете опция: ";
cin >> sw;
switch ( sw ) {
case 1: cout << "Средната стойност на температурата за месеца е: " << result/dni << " градуса."<< endl; break;
case 2:
cout << "Средна стойност на температурата за месеца на първите " << dni_za_sredna_stoinost << " дена :" << sredna_stoinost[0] << endl;
cout << "Средна стойност на температурата за месеца на вторите " << dni_za_sredna_stoinost << " дена :" << sredna_stoinost[1] << endl;
cout << "Средна стойност на температурата за месеца на третите " << dni_za_sredna_stoinost << " дена :" << sredna_stoinost[2] << endl;
cout << "Средна стойност на температурата за месеца на четвъртите " << dni_za_sredna_stoinost << " дена :" << sredna_stoinost[3] << endl;
//Остатък от целоцислено делене ако има значи има оставащи дни които са по малко от 7
if ( dni % dni_za_sredna_stoinost ) {
cout << "Средна стойност на температурата за месеца за последните " << dni % dni_za_sredna_stoinost << " дена :" << sredna_stoinost[4] << endl;
}
break;
case 3: cout << "Минимална температура за месеца е: " << min; break;
case 4: cout << "Максимална температура за месеца е: " << max; break;
case 5: cout << "Довиждане!!!" << endl; break;
}
} while (sw != 5);
return 0;
}
При самото компилиране няма грешки, но като я изпълня и въведа стойности, изчисленията ми ги прави грешно.
Поствам и аутпут от изхода на програмата:
# c++ vremeto.cpp
# ./a.out
Въведете брой на дни в месеца (между 28 и 31): 30
Въведете температура за ден номер 1: 3
Въведете температура за ден номер 2: 3
Въведете температура за ден номер 3: 3
Въведете температура за ден номер 4: 3
Въведете температура за ден номер 5: 3
Въведете температура за ден номер 6: 3
Въведете температура за ден номер 7: 3
Въведете температура за ден номер 8: 3
Въведете температура за ден номер 9: 3
Въведете температура за ден номер 10: 3
Въведете температура за ден номер 11: 3
Въведете температура за ден номер 12: 3
Въведете температура за ден номер 13: 3
Въведете температура за ден номер 14: 3
Въведете температура за ден номер 15: 3
Въведете температура за ден номер 16: 3
Въведете температура за ден номер 17: 3
Въведете температура за ден номер 18: 3
Въведете температура за ден номер 19: 3
Въведете температура за ден номер 20: 3
Въведете температура за ден номер 21: 3
Въведете температура за ден номер 22: 3
Въведете температура за ден номер 23: 3
Въведете температура за ден номер 24: 3
Въведете температура за ден номер 25: 3
Въведете температура за ден номер 26: 3
Въведете температура за ден номер 27: 3
Въведете температура за ден номер 28: 3
Въведете температура за ден номер 29: 3
Въведете температура за ден номер 30: 3
==============================================
==================== MENU ====================
==============================================
1) Средна стойност за месеца.
2) Средна стоиност за седмиците от месеца.
3) Минимална температура за месеца.
4) Максимална температура за месеца.
5) Exit
Изберете опция: 1
Средната стойност на температурата за месеца е: 2600986 градуса.
Както виждате средната температура за месеца е някакво супер голямо число. Според това което намерих в нета, трябва да си инсталирам "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 ()", сметките стават както трябва, но това не ми се струва да е редно