PDA

View Full Version : Програмиране Помощ



06-04-2007, 08:39
Предстой ми кандидат-студентски изпит и знам че задачата която ще дадат по програмиране ще е много подона на тази,но уви нещо не се справям с нея :( а ми е много наложително да я науча...
Ако може някой да ми я напише 8-[
ако е от Шумен ще го и почерпя

Задача:
Да се състави програма Temp,която за месец състоящ се от 30 календарни
дни,въвежда данни за средните дневни температури за всеки ден и отпечатва:
1)Средната температура за месеца;
2)Средната температура за второто десетдневие;
3)Минималната температура за първото десетдневие;
4)Датите,на които температурите са били под средната;
5)Най дългия период на застудяване - последователност от дни с температура под средната.

LGPz
06-04-2007, 19:54
Ако трябва да я пишеш на С++,мисля,че мога да я напиша!Само кажи ...
Реших да седна да напиша какво трябва да прави програмата:

Задача:
Да се състави програма Temp,която за месец състоящ се от 30 календарни
дни,въвежда данни за средните дневни температури за всеки ден и отпечатва:
1)Средната температура за месеца;
2)Средната температура за второто десетдневие;
3)Минималната температура за първото десетдневие;
4)Датите,на които температурите са били под средната;
5)Най дългия период на застудяване - последователност от дни с температура под средната.

0.Въвежда "данни за средните дневни температури за всеки ден"
1.Ами ... не знаеш ли как се намира средна температура (и не само)? (Ден1+Ден2+...+Ден30)/30
2.Второ десетдневие - от 11-ти до 20-ти /поне аз така си мисля де/. Пак по същия начин,но този път (Ден11+Ден12+...+Ден20)/10
3.Тук вече(според мене) трябва да сравняваш числа и щом не можеш да се справиш с горните 2,то с това АБСУРД!!!
4.Приемам,че имаш в предвид "средната за месеца".Емм...сравняване... /може да има пол-рац. начин,но не се сещам в момента/
5.Ще видим тук как ще стане ... :D

THE FULL SORCE + .exe file COMMING UP SOON!!!

06-10-2007, 08:21
Ето нещо набързо. Оптимизацията остава за теб.


// vreme.cpp
// Dev C++
/*
Да се състави програма Temp,която за месец състоящ се от 30 календарни
дни,въвежда данни за средните дневни температури за всеки ден и отпечатва:
1)Средната температура за месеца;
2)Средната температура за второто десетдневие;
3)Минималната температура за първото десетдневие;
4)Датите,на които температурите са били под средната;
5)Най дългия период на застудяване - последователност от дни с температура под средната.
*/

#include <iostream>
#include <conio.h>

using namespace std;

#define N 30

void read();
float temp();
void print();

bool flag = false;
float mesec[N];

int main()
{
print();
cout<<endl;

return 0;
}

// -----------------------------------------------------------------------------
void read()
{
flag = true;

for(int i=0; i<N; i++)
{
cout<<"den "<< i+1 <<" : ";
cin>>mesec[i];
}
}

// -----------------------------------------------------------------------------
float temp(int n)
{
float sr_temp = 0;
int i =0;

if(!flag)
{
cout << "vyvedete dannite: "<<endl;
read();
}

if( n == 1)
{
for(i=0; i<N; i++)
sr_temp += mesec[i];
return sr_temp/N;
}

if( n == 2)
{
for(i=10; i<20; i++)
sr_temp += mesec[i];
cout << endl <<"sredna temperatura za vtoro desetdnevie: ";
return sr_temp/10;
}

if( n == 3)
{
float min_temp = mesec[0];
for(i=1; i<10; i++)
if(min_temp > mesec[i]) min_temp = mesec[i];
cout << "minimalna temperatura za pyrvite 10 dni: ";
return min_temp;
}
}

// -----------------------------------------------------------------------------
void min_days(int n)
{
float sr_temp = temp(1);
int count_t=0, count_all=0, i;

if(n == 4)
{
cout << endl;
cout<<"dni pod srednata temperatura: ";
for(i=0; i<N; i++)
if(mesec[i] < sr_temp) cout<< i+1 <<" ";
cout << endl << endl;
}

if(n == 5)
{
for(i=0; i<N; i++)
{
if(mesec[i] < sr_temp) count_t ++;
else if(count_all < count_t)
{
count_all = count_t;
count_t = 0;
}
}
cout << "studen period v dni: " << count_all << endl;
}
}

// -----------------------------------------------------------------------------
void print()
{
int menu = 0;

do{
cout<<endl;
cout<<"1. sredna temperatura za mesec" <<endl;
cout<<"2. sredna temperatura za vtoro desetdnevie" <<endl;
cout<<"3. minimalna za 1 desetdnevie" <<endl;
cout<<"4. dni pod srednata temperatura" <<endl;
cout<<"5. studen period" <<endl;
cout<<"0. exit" <<endl;
cout << "izbor ot menu: ";
cin >> menu;
cout<<endl;

switch(menu)
{
case 1:
case 2:
case 3: cout << temp(menu) << endl; break;
case 4:
case 5: min_days(menu); break;
default : cout<<"Incorect input!"<<endl; break;
}
} while(menu != 0);
}

// -------------------------- END ----------------------------------------------

Ето подобна програма, която преди много време трябваше да напиша.


/************************************************** ******************/
/* Програма, която въвежда температурата за всеки ден от месеца */
/* ( сутрин, обед и вечер) и определя по зададен ден средната */
/* температура за деня */
/************************************************** ******************/

#include <iostream.h>
#include <iomanip.h>
#include <string.h>

// прототипи на функции ----------------------------------------------

void Day_Mesec(int a, int b, int &max);
void Enter_Data();
int main();

// -------------------------------------------------------------------
int main()
{
Enter_Data();
return 0;
}

// -------------------------------------------------------------------
void Enter_Data()
{
float day[31][3], srt[31]; //темп. за всеки ден, средна темп.
float sum;
int den, mesec, godina, max =0;
char ch[10];
cout<<"Въведете годината ";
cin>>godina;
cout<<"За кой месец ще отчитате температурата? ";
cin>>mesec;
Day_Mesec(mesec, godina, max);
for (int i = 0; i < max; i++)
{
cout<<"Ден "<<i+1<<"\n";
for (int j = 0; j < 3; j++)
{
switch (j)
{
case 0: strcpy(ch,"сутринта "); break;
case 1: strcpy(ch,"на обяд "); break;
case 2: strcpy(ch,"вечерта "); break;
}
cout<<"Каква е температурата "<<ch;
cin>>day[i][j];
sum += day[i][j];
}
srt[i] = sum/3;
sum = 0;
}
if(max > 27 && max < 32)
{
cout<<"\nЗа кой ден искате средната температура? ";
cin>>den;
cout<<"\nСредната температура е "<<setprecision(2)<<srt[den-1]<<" градуса\n";
}
else return;
}

// ------------------------------------------------------------------------
void Day_Mesec(int a, int b, int &max)
{
switch (a)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: max = 31; break;
case 4:
case 6:
case 9:
case 11: max = 30; break;
case 2: max = ( (b % 4) == 0 )? 29 : 28; break;// дали е високосна
default : cout<<"няма такъв месец !"; break;
}
return;
}

Успех!

Fena
06-10-2007, 09:07
Къде са те учили да подреждаш така функциите? :)

LGPz
06-10-2007, 09:20
ха,браво.Аз бях запецнал на 5-та точка.А и тряаше за нея да науча оператора за цикъл "for" ... /а спец. ся тряа да уча за обри оценки :D /

Fena
06-10-2007, 09:43
Къде са те учили да подреждаш така функциите? :) Сигурно сам се е научил. :) По-нагледно е. ;)

Именно, особено ако имаш да оправяш код от 1000 реда. Но съм останал с впечатление че на малко места ги учат да подреждат функциите в една all_in_one().