Skocz do zawartości

jaresxeni

Użytkownik
  • Liczba zawartości

    5
  • Rejestracja

  • Ostatnia wizyta

Posty dodane przez jaresxeni

  1. Witam, pisze program który ma podobne działanie jak komiwojażer ale nie tak skomplikowane.

    Cały kod napisałem problem jest taki ze nie wyświetla nazw miast w odpowiedniej kolejności, siedzę nad tym już kilka godzin zmieniam na różne sposoby warunki ale bez skutku. Będe bardzo wdzięczny za szybką pomoc.

    #include<iostream>
    #include<math.h>
    
    using namespace std;
    
    int main()
    {
        double wspol_x[6]={0,52.259,50.060,50.049,52.399,54.360};
        double wspol_y[6]={0,21.020,19.956,21.999,16.900,18.639};
        string nazwa[6]={"","Warszawa","Krakow","Rzeszow","Poznan","Gdansk"};
        cout<<"Z kad zaczac ? (1-Warszawa;2-Krakow;3-Rzeszow;4-Poznan;5-Gdansk) \n";
        int a,b,c,e,g,i,j;
        string f;
        double d,h;
        cin>>a;
        cout<<"Zaczynasz z miasta : "<<nazwa[a]<<endl;
        double odl[6];
        double odl_ost[6];
        string segr[6];
        string pom[6];
        int licz[6]={9,9,9,9,9,9};
       g=1;
       i=1;
       j=1;
       segr[1]=nazwa[a];
        for(b=1;b<=5;b++)
        {
            //licz[b]=a;
           for(c=1;c<=5;c++)
            {
                if(b==1)
                {
                    d=sqrt(pow(wspol_x[a]-wspol_x[c],2)+pow(wspol_y[a]-wspol_y[c],2));
                    odl[c]=d;
                    pom[c]=nazwa[c];
                }
                else
                {
                    if((wspol_x[c]!=0)&&(wspol_y[c]!=0))
                    {
                        d=sqrt(pow(wspol_x[a]-wspol_x[c],2)+pow(wspol_y[a]-wspol_y[c],2));
                        odl[c]=d;
                        pom[c]=nazwa[c];
                    }
                }
            }
            //-----w celu sprawdzenia poprawnosci---
            cout<<endl;
            for(int s=1;s<=5;s++)
                cout<<odl[s]<<"  ";
                //------------
            for(e=1;e<=30;e++)
            {
                if(odl[g]>odl[g+1])
                {
                    h=odl[g];
                    odl[g]=odl[g+1];
                    odl[g+1]=h;
                    f=pom[g];
                    pom[g]=pom[g+1];
                    pom[g+1]=f;
                    //pom[g]=nazwa[g+1];
                }
                /*if(odl[g]<odl[g+1])
                {
                    //pom[g]=nazwa[g];
                }*/
                if(g+1==5)
                    g=1;
                g++;
            }
            //---w celu sprawdzenia poprawnosci-----
            cout<<endl;
            for(int s=1;s<=5;s++)
                cout<<odl[s]<<"  ";
                //------------
                //--------
            cout<<endl;
            for(int s=1;s<=5;s++)
                cout<<pom[s]<<"  ";
                //------------
           /* if(b==1)
            {
                if(odl[1]==0)
                {
                    segr[b+1]=pom[2];
                    odl_ost[b+1]=odl[2];
                    while(i<=5)
                    {
                        if(pom[2]==nazwa[i])
                            a=i;
                        i++;
                    }
                }
            }
            if(b>1)
            {
                if(odl[1]==0)
                {
                    segr[b+1]=pom[2];
                    odl_ost[b+1]=odl[2];
                    while(i<=5)
                        {
                            if(pom[2]==nazwa[i])
                                a=i;
                            i++;
                        }
                }
            }*/
            wspol_x[a]=0;
            wspol_y[a]=0;
            nazwa[a]=" ";
            while(i<=5)
            {
                if(odl[i]!=0)
                {
                    if(b==1)
                    {
                        segr[b+1]=pom[i];
                        
                    }
                    else
                        segr[b+1]=pom[b];
                    //segr[b+1]=pom[i];
                    odl_ost[b+1]=odl[i];
                    a=i;
                    break;
                }
                i++;
            }
            i=1;
            for(j=1;j<=6;j++)
            {
                odl[j]=0;
                pom[j]=" ";
            }
    
        }
        cout<<endl<<"Wyruszasz z "<<segr[1]<<" do "<<segr[2]<<endl;
        cout<<" Z "<<segr[2]<<" do "<<segr[3]<<endl;
        cout<<" Z "<<segr[3]<<" do "<<segr[4]<<endl;
        cout<<" Z "<<segr[4]<<" do "<<segr[5]<<endl;
        cout<<" Z "<<segr[5]<<" wracasz do "<<segr[1]<<endl;
        return 0;
    
    } 
  2. Witam, mam problem z programem który próbuje napisać, ma on pobrać z głównego programu tablice do funkcji i tu sie zaczynają schody, poniewaz do funkcji pobiera liczby z kosmosu . Próbowałem na dwa sposoby i w obu przypadkach taki sam efekt

    sp1:
     

    #include<iostream>
    #include<math.h>
    
    using namespace std;
    
    void srednia(double *c);
    
    int main()
    {
        double T[5];
    
    //----- Podanie cen ---------
        for(int a=1;a<=5;a++)
        {
            cout<<"Podaj cene "<<a<<" rzeczy \n";
            cin>>T[a];
        }
        double *tab= T;
    
    for(int a=1;a<=5;a++)
        {
            cout<<T[a]<<endl;
        }
        srednia(tab);
    
        return 0;
    }
    
    void srednia(double *c)
    {
        int a;
        double suma=0,sr=0,t[5];
        for(a=1;a<=5;a++)
        {
            suma+=t[a];
        }
        sr=suma/5.0;
        cout<<suma<<endl;
        cout<<"sred "<<sr<<endl;
        cout<<"ceny poniżej sredniej \n";
        for(a=1;a<=5;a++)
        {
            if(t[a]<sr)
                cout<<"na pozycji "<<a<<" cena = "<<t[a]<<endl;
        }
    
    }
    

    sp2:

    #include<iostream>
    #include<math.h>
    
    using namespace std;
    
    void srednia(double c[5]);
    
    int main()
    {
        double T[5];
    
    //----- Podanie cen ---------
        for(int a=1;a<=5;a++)
        {
            cout<<"Podaj cene "<<a<<" rzeczy \n";
            cin>>T[a];
        }
    
    for(int a=1;a<=5;a++)
        {
            cout<<T[a]<<endl;
        }
        srednia(T);
    
        return 0;
    }
    
    void srednia(double c[5])
    {
        int a;
        double suma=0,sr=0,t[5];
        for(a=1;a<=5;a++)
        {
            suma+=t[a];
        }
        sr=suma/5.0;
        cout<<suma<<endl;
        cout<<"sred "<<sr<<endl;
        cout<<"ceny poniżej sredniej \n";
        for(a=1;a<=5;a++)
        {
            if(t[a]<sr)
                cout<<"na pozycji "<<a<<" cena = "<<t[a]<<endl;
        }
    
    }
    

    Będe wdzięczny jak ktoś mi powie gdzie robie błędy 

  3. O ładnie ;/ nie wiem jak to sprawdzałem że nie za uważyłem tego. No i teraz się okazało że jest pełno błędów a ja sobie niemogłęm z jednym poradzić 

     

     

    Dziękuje za pomoc @Luki91 twoje sugestie bardzo mi pomogły, dodanie nowej zmiennej i edycja jednego warunku przyniosły pozytywny skutek jeszcze tylko sprawdze czy aby na pewno działą dla wszystkich liczb :D 


    Tak wyglada poprawny kod tego programu (program sprawdiłem ale nie daje 100% pewności bo znowu mogłem coś przeoczyć) może komuś sie przyda jeszcze :) Jeszcze raz dziękuje @Luki91 za szybką pomoc.

    #include <iostream>
    #include <math.h>
    #include <string>
    
    using namespace std;
    
    string jednosci[10]={"","jeden ","dwa ","trzy ","cztery ","piec ","szesc ","siedem ","osiem ","dziewiec "};
    string nastki[11]={"","dziesiec ","jedenascie ","dwanascie ","trzynascie ","czternascie ","pietnascie ","szesnascie ","siedemnascie ",
                       "osiemnascie ","dziewietnascie "};
    string dziesiatki[10]={"","dziesiec ","dwadziescia ","trzydziesci ","czterdziesci ","piecdziesiat ","szescdziesiat ","siedemndziesiat ",
                          "osiemdziesiat ","dziewiecdziesiat "};
    string setki[10]={"","sto ","dwiescie ","trzysta ","czterysta ","piecset ","szescset ","siedemset ","osiemset ","dziewiecset "};
    
    
    int main()
    {
        int j=0,liczba,koncowka,k=1,c=0;
        string i,slownie="";
    
    //------- Petla pozwalajaca wpisac kolejne cyfry ---------------
    
        while(k>0)
        {
            if(k>1)
            {
                cout<<"chcesz podac jeszcze raz ? (TAK/NIE)\n";
                cin>>i;
                cout<<endl;
    
            if(i=="TAK"||i=="tak"||i=="Tak")
            {
               k=1;
               j=0;
               slownie="";
            }
            else
                return 0;
            }
    //-------- Pogram zamieniajacy na slowa --------------
    
            cout<<"podaj liczbe z zakresu 1-999 \n";
            cin >> liczba;
            if (liczba<1||liczba>999)
            {
                cout<<"liczba nie jest z zakresu 1-999";
                return 0;
            }
    
            do
            {
                koncowka = liczba % 10;
                liczba = liczba / 10;
    
                if (j==3||(j==2&&c!=1))
                {
                    slownie=setki[koncowka]+slownie;
    
    
                }
    
                if (j==1)
                {
                    slownie=dziesiatki[koncowka]+slownie;
    
                }
    
                if (j==0 && (liczba%10!=1))
                {
                     slownie=jednosci[koncowka]+slownie;
    
                }
    
                if (j==0 && (liczba%10==1))
                {
                    slownie=nastki[koncowka+1]+slownie;
                    liczba=liczba*10;
                    c=1;
    
    
                }
                 j=j+1;
            }
            while(liczba>0);
            k++;
            c=0;
    
        cout << slownie <<endl<<"----------------- \n"<<endl;
        }
        return 0;
    }
    
    
  4. Witam, mam problem z programem napisanym w języku c++. 
    W programie mamy podaj jakąś liczbe z zakresu 1-999 a on ma nam ją zapisać słownie.

    Napisałem cały program, który działa prawie bez błednie, tzn wypisuje wszystkie liczby ale gubi się przy jednej mianowicie 111, wiem dlaczego ale nie mam pomysłu jak to naprawić. Poniżej podaje cały kod prograu. Z góry dziękuje za pomoc.
     

    #include <iostream>
    #include <math.h>
    #include <string>
    
    using namespace std;
    
    string jednosci[10]={"","jeden ","dwa ","trzy ","cztery ","piec ","szesc ","siedem ","osiem ","dziewiec "};
    string nastki[11]={"","dziesiec ","jedenascie ","dwanascie ","trzynascie ","czternascie ","pietnascie ","szesnascie ","siedemnascie ",
                       "osiemnascie ","dziewietnascie "};
    string dziesiatki[10]={"","dziesiec ","dwadziescia ","trzydziesci ","czterdziesci ","piecdziesiat ","szescdziesiat ","siedemndziesiat ",
                          "osiemdziesiat ","dziewiecdziesiat "};
    string setki[10]={"","sto ","dwiescie ","trzysta ","czterysta ","piecset ","szescset ","siedemset ","osiemset ","dziewiecset "};
    
    
    int main()
    {
        int j=0,liczba,koncowka,k=1;
        string i,slownie="";
    
    //------- Petla pozwalajaca wpisac kolejne cyfry ---------------
    
        while(k>0)
        {
            if(k>1)
            {
                cout<<"chcesz podac jeszcze raz ? (TAK/NIE)\n";
                cin>>i;
                cout<<endl;
    
            if(i=="TAK"||i=="tak"||i=="Tak")
            {
               k=1;
               j=0;
               slownie="";
            }
            else
                return 0;
            }
    
    //-------- Pogram zamieniajacy na slowa --------------
    
            cout<<"podaj liczbe z zakresu 1-999 \n";
            cin >> liczba;
            if (liczba<1||liczba>999)
            {
                cout<<"liczba nie jest z zakresu 1-999";
                return 0;
            }
    
            do
            {
                koncowka = liczba % 10;
                liczba = liczba / 10;
    
                if (j==2)
                {
                    slownie=setki[koncowka]+slownie;
    
    
                }
    
                if (j==1)
                {
                    slownie=dziesiatki[koncowka]+slownie;
    
                }
    
                if (j==0 && (liczba%10!=1))
                {
                     slownie=jednosci[koncowka]+slownie;
    
                }
    
                if (j==0 && (liczba%10==1))
                {
                    slownie=nastki[koncowka+1]+slownie;
                    liczba=liczba/10;
    
    
                }
                 j=j+1;
            }
            while(liczba>0);
            k++;
    
        cout << slownie <<endl<<"----------------- \n"<<endl;
        }
        return 0;
    }
    
    
×
×
  • Dodaj nową pozycję...