Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Tablice dynamiczne cin>>?

elemele186 11 Maj 2010 22:29 926 3
  • #1 11 Maj 2010 22:29
    elemele186
    Poziom 7  

    prosze o pomoc

    Code:
    #include <cstdlib>
    
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {
        int ile;
        cout<<"Podaj ile liczb chcesz wprowadzic"<<endl;
        cin>>ile;
        int *a=new int [ile];
        int licznik;
        for(licznik=0;licznik<ile;licznik++,a++)
        {
        cout<<"Podaj liczbe:"<<endl;
        cin >> *a;
        }
        for(licznik=0;licznik<ile;licznik++,a++)
        {
           if(*a>*(a+1))
           {
               *(a+1)=*a;
           }
           
           else
           {
               *a=*(a+1);
           }
        }
        cout<<*(a-1)<<endl;//tu nie wiem co wpisac
        delete[]a;
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    0 3
  • #2 11 Maj 2010 22:53
    McMonster
    Poziom 32  

    Przede wszystkim po utworzeniu dynamicznej tablicy dalej odwołujesz się do niej normalnie, nie jest potrzebny operator wyłuskania (wynika to z faktu, że tablica jest wskaźnikiem, ale to temat na głębszy wywód) i stąd zamiast

    Code:
    for(licznik=0;licznik<ile;licznik++,a++)
    
    {
        cout<<"Podaj liczbe:"<<endl;
        cin >> *a;
    }


    powinno być

    Code:
    for(licznik=0;licznik<ile;licznik++)
    
    {
        cout<<"Podaj liczbe:"<<endl;
        cin >> a[licznik];
    }


    Samego a już nie ruszasz, to jest wskaźnik na pierwszy element tablicy, a pisząc a++ przesuwasz ten początek, a tego się w ten sposób nie powinno robić. Dalej robisz podobnie, nie inkrementujesz wskaźnika, tylko odwołujesz się do kolejnego elementu tablicy (zamiast *a>*(a+1) piszesz a[licznik]>a[licznik+1] i tak dalej) .

    Natomiast co chcesz wypisać na końcu programu, to już sam musisz wiedzieć. :D

    0
  • #3 12 Maj 2010 00:19
    elemele186
    Poziom 7  

    Cos takiego mi wyszło ale dalej nie dziala.Po wprowadzeniu 3,1,2,3 wyswietla sie 7793382373 czyli tak jak wczesniej o ile dobrze pamietam, co zrobic zeby najwieksza liczbe pokazywal

    Code:
    #include <cstdlib>
    
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {
        int ile;
        cout<<"Podaj ile liczb chcesz wprowadzic"<<endl;
        cin>>ile;
        int *a=new int [ile];
        int licznik;
        for(licznik=0;licznik<ile;licznik++)
        {
        cout<<"Podaj liczbe:"<<endl;
        cin >> a[licznik];
        }
        for(licznik=0;licznik<ile;licznik++)
        {
           if(a[licznik]>a[licznik+1])
           {
               a[licznik+1]=a[licznik];
           }
           
           else
           {
               a[licznik]=a[licznik+1];
           }
        }
        cout<<a[licznik]<<endl;//tu nie wiem co wpisac
       
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    0
  • #4 12 Maj 2010 10:49
    Eagle
    Poziom 23  

    To powinno rozwiązać twój problem

    Code:

    int main(int argc, char *argv[])
    {
        int ile;
        cout<<"Podaj ile liczb chcesz wprowadzic"<<endl;
        cin>>ile;
        int *a=new int [ile];
        int licznik;
        for(licznik=0;licznik<ile;licznik++)
        {
          cout<<"Podaj liczbe:"<<endl;
          cin >> a[licznik];
        }

       int max=0x80000000; // min U2 int
       
        for(licznik=0;licznik<ile;licznik++)
           if(a[licznik]>max)
              max =a[licznik];
     
        cout<<"Najwieksza liczba jest :"<<max<<endl;

       delete []a;

        system("PAUSE");
        return EXIT_SUCCESS;
    }


    Pozdrawiam

    Eagle

    0