Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

 Програмка
Автор  IzVaNz3mNo7o (12.12.2004 12:07) съобщение до автора
Погледнат  2834 пъти добави към любими
Оценка добави коментар
Гласове  55 изпрати на приятел
Коментари  (3) абонирай се за C-Cplusplus
     
IzVaNz3mNo7o
     
 

Тази проста програма е написана по-скоро с учебна цел, отколкото като софтуер. Застъпени са доста от основите на C++ - коментари, променливи, присвоявания, условия, въвеждане/извеждане на екрана...
Програмата се компилира успешно:
File --> New --> Win32 Console Application --> Empty project
Забележка: Навсякъде в програмния код, където срещнете символа за нов ред, при компилиране слагайте наклонена черта наляво пред n-то. Тук е без нея, защото явно самата форма за скриптовете не допуска този символ.

// Programa za presmqtane liceto na triugulnik/trapec/krug po zadadeni parametri
#include <iostream> // Dobavqme zaglavniq fail iostream

int main() // Funkciq main bez parametri
{
    int a, // Deklarirane na promenlivite ot tip int
        b,
        c,
        h,
        r,
        S,
        ch;
    char ttk, // Deklarirane na promenlivite ot tip char
         t,
         p,
         k;

    do // Izpulnqvai...
    {
        std::cout << "Programa za presmqtane liceto na triugulnik/trapec/krug po zadadeni parametri";
        std::cout << "n"; // Simvol za nov red
        std::cout << "Avtor: Anton Sarov";
        std::cout << "n";
        std::cout << "n";
        std::cout << "Vuvedete 1 za start i 2 za izhod: ";
        std::cin >> ch;
        if (ch == 1)
        {
            std::cout << "Vuvedete figurata, chieto lice iskate da poluchite: ";
            std::cout << "n";
            std::cout << "Vuvedete 't' za triugulnik, 'p' za trapec i 'k' za krug: ";
            std::cin >> ttk;
            if (ttk == 't') // Proverka dali shte tursim liceto na triugulnik...
            {
                std::cout << "Vuvedete stranata: ";
                std::cin >> a;
                std::cout << "Vuvedete visochinata: ";
                std::cin >> h;

                S = (a*h)/2;

                std::cout << "Liceto e " << S; // Izvejdane na rezultata
                std::cout << "n";
                std::cout << "n";
            }
       
            if (ttk == 'p') // ...ili trapec...
            {
                std::cout << "Vuvedete osnovata a: ";
                std::cin >> a;
                std::cout << "Vuvedete osnovata b: ";
                std::cin >> b;
                std::cout << "Vuvedete visochinata h: ";
                std::cin >> h;

                S = ((a+b)/2)*h;

                std::cout << "Liceto e " << S; // Izvejdane na rezultata
                std::cout << "n";
                std::cout << "n";
            }

            if (ttk == 'k') // ...ili krug
            {
                std::cout << "Vuvedete radiusa r: ";
                std::cin >> r;

                S = (3.14)*r*r; // Prisvoqvane

                std::cout << "Liceto e " << S; // Izvejdane na rezultata
                std::cout << "n";
                std::cout << "n";
            }
        } // Krai na usloviqta za start na programata

        if (ch == 2)
        {
            return 0;
        }
    }
    while (ch != 2); // ...dokato...
} // Krai tqloto na funkciqta main



Ключови думи: c C++ c# програма software софтуер въвеждане извеждане компилиране




 1 посетител чете този скрипт (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

  gaga на 24.06.2007 17:55

taka , poneje gledam 4e si4ki tuka ste nekvi entosiasti , i ni6to ne 4atkate eto edna programka pone za triugalnik , 4e da ne e samo s viso4ina , a da e s to4ki ot kordinatnata sistema , tui kato s strana i viso4ina i babami moje da q smetne za 5 sekundi na um
#include <iostream.h>
#include <math.h>
void main()
{
    long double ax,ay,bx,by,cx,cy;
   long double a,b,c,s,p;
   long double cos_a,cos_b,cos_c;
   long double r,R;
   char q;
 do
 {
    cout<<"\nAx= "; cin>>ax;
    cout<<"Ay= "; cin>>ay;
    cout<<"Bx= "; cin>>bx;
    cout<<"By= "; cin>>by;
    cout<<"Cx= "; cin>>cx;
    cout<<"Cy= "; cin>>cy;

   if ((ax==bx&&ay==by)||(ax==cx&&ay==cy)||(bx==cx&&by==cy))
      cout<<"\n !!! trqbva to4kite da imat razli4ni koordinati !!!\n";
   else
   {
   a=sqrt((bx-cx)*(bx-cx)+(by-cy)*(by-cy));
    b=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));
    c=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
   cout<<"\n AB= "<<c<<"  BC= "<<a<<"  AC= "<<b;
   p=a+b+c;
   cout<<"\n P= "<<p;
    p=p/2;
   s=sqrt(p*(p-a)*(p-b)*(p-c));
    cout<<"  S= "<<s<<"\n";
   if (s==0)
   cout<<"\n !!! A,B i C lejat na edna prava!!! \n";
   else
   {r=s/p;
   cout<<" r= "<<r;
   R=(a*b*c)/(4*s);
   cout<<" R= "<<R;
   }
   cos_a=(b*b+c*c-a*a)/(2*b*c);
   double l=0;
    while(cos(l*0.017453292519943295769236907684886)>cos_a)
    l=l+0.01;
   cout<<"\n BAC= "<<l;

   l=0;
   cos_b=(a*a+c*c-b*b)/(2*a*c);
   while(cos(l*0.017453292519943295769236907684886)>cos_b)
    l=l+0.01;
   cout<<"  ABC= "<<l;

   l=0;
   cos_c=(a*a+b*b-c*c)/(2*a*b);
   while(cos(l*0.017453292519943295769236907684886)>cos_c)
    l=l+0.01;
   cout<<"  ACB= "<<l<<"\n";
   }
 cout<<"\n iskate li da smqtate za drug triugalnik? y/n ";
 cin>>q;
 }
while(q=='y');
}


PS ne priemam komentari kum programata , ba4ka sus borland c++ 5.02 i ako nqkoi ima problemi da si q popravq se pak za tva e open source

  irrefutable на 16.02.2005 19:33

Реших, че би било от полза за всички да направя една резенция на примерната ти програма. Ако имаш някакви възражения по предложенията ми ще се радвам да ги обсъдим.
Добре би било да изнесеш информацията за автора и самата програма извън цикъла - да се показва само веднъж при стартиране на приложението. А самата информация е добре да е в някакъв константен стринг.

Често използваш cin и cout. Така че е добра идея или да внесеш в глобалното именно пространство цялото пространство std чрез : using namespace std; или да внесеш само символите cin и cout така : using std::cin; using std::cout; И да ги ползваш без указване на именно пространство.

Kонструкцията : if (ch ==2) return 0; е излишна. Връщай 0-лата като последен ред на функцията main(). Така или иначе при стойност на ch равна на 2 цикъла ще спре и програмата ще приключи. В момента имаш предупреждение при компилация, че не всички пътища връщат стойност именно заради това.

При въвеждане в менюто на стойност, различна от 1 и 2, не се извежда никакво съобщение за грешка.

Освен това и на двете места (менюто и самите стойности за изчисленията) очакваш целочислена стойност като вход. А ако потребителят въведе реално число или буква по грешка? Програмата забива! По-добре въвеждай стринг, който после преобразувай до число ако е възможно. А ако не е - изведи съобщение за грешка. Или проверявай състоянието на входния поток cin за да разбереш дали въвеждането е било успешно преди да използваш въведената стойност.

Също така не е добра идея да натъпчеш цялата функционалност във функцията main(). Тя трябва да те насочва какво ще се прави, а не как точно, с цел да бъде по-лесно четима. Най-малкото, което можеш да направиш, е да отделиш изчисленията на различните лица в отделни функции. Но като става дума за примерна програма на езика С++, то би било добре да покажеш силата на класовете като организираш йерархия от фигури с виртуална функция double calculateSurface(). Всеки от наследниците на Figure, а именно Triangle, Circle и Trapezium, ще предоставя своя реализация.

И все пак ако оставиш main()-а така, то направи избора да се проверява не чрез if-ове, a чрез switch конструкция.

Коментари като : "// Prisvoqvane", "// Izvejdane na rezultata", "// Simvol za nov red" не само не са от полза, а напротив - "замърсяват" зрителното поле и правят кода дори по-трудно четим от колкото ако ги нямаше изобщо. Ако ще се пишат коментари те трябва да са информативни, а не просто да отбиват номера.

Името на променливата ttk изобщо нищо не говори - не разбирам защо така си решил да бъде, предполагам и ти след година няма да си наясно защо точно това ти е хрумнало. По-ясно щеше да е ако се казва например choice.

  Izida на 21.12.2004 15:18

 

 
  • Интересно от Софтуер
 
  • Интересно от myLINKS
 
 
 
 



IT-PLACE.NET © 2004 - 2008