Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie z wypisywaniem drugiej największej liczby.

Ostatnio zmodyfikowano 2018-03-06 16:53
Autor Wiadomość
MaikelOO
Temat założony przez niniejszego użytkownika
Zadanie z wypisywaniem drugiej największej liczby.
» 2018-03-05 21:29:01
Witam.

Chciałbym zaznaczyć, że dopiero zaczynam przygodę z programowaniem także prosiłbym o komentarze bez docinek (w środowisku matematyczno/informatycznym dość często je na innych forach widziałem).

Przechodząc do sedna problemu z którym się zmagam otóż wykonuje zadanie, w którym założone jest, że trzeba wpisać 'n' drużyn, a także ilości punktów tych drużyn, a na końcu wypisał wicemistrza. Udało mi się dojść do momentu, w którym program pokazywał największy element danej tablicy, ale od kiedy próbuje wyprowadzić drugi największy element to mój program, mimo udanej kompilacji, się wyłącza od razu po uruchomieniu.

C/C++
#include <iostream>


using namespace std;

int main()
{
    int n;
    int t[ n ];
    cin >> n;
    int maxo = 0;
    for( int i = 0; i < n; i++ )
         cin >> t[ i ];
   
    int maxi = t[ 0 ];
    for( int i = 1; i < n; i++ )
    if( t[ i ] > maxi )
         maxi = t[ i ];
   
    cout << maxi << endl;
    for( int i = 0; i < n; i++ )
    if( t[ i ] == maxi )
         cout << maxi << endl;
   
    for( int i = 0; i < n; i++ )
    if(( t[ i ] > maxo ) &&( maxi > t[ i ] ) )
         maxo = t[ i ];
   
    cout << maxo << endl;
}

Program dochodził do linijki wypisującej 'maxi', a wszelkie próby rozszerzenia programu poniżej kończyły się zamknięciem programu od razu po włączeniu. Prosiłbym o naprowadzenie gdzie popełniłem błąd i co powinienem zrobić by ten program poprawić. Z góry dziękuje i życzę miłego wieczoru/nocy :-)!
P-169797
maly7
» 2018-03-05 21:41:25
C/C++
int   n;
int   t[   n   ];
Jaki według Ciebie jest rozmiar tablicy t?
P-169799
MaikelOO
Temat założony przez niniejszego użytkownika
» 2018-03-05 21:44:52
Nie do końca rozumiem co masz na myśli..

int n - chodziło o utworzenie zmiennej 'n'
int t[n] - chodziło o utworzenie zmiennej o rozmiarze n
P-169800
YooSy
» 2018-03-05 22:35:00
A jaką wartość ma zmienna
n
? Poza tym standard C++ mówi, że tablica statyczna
ma mieć stały rozmiar, więc zmienna określająca rozmiar tablicy musi być
const
.

edit: Zacznijmy od tego, że nawet nie potrzebujesz tablicy do rozwiązania tego zadania.
Wystarczy aktualizować wartość maks i wicemaks o podaną wartość w n-iteracjach pętli.
P-169802
pekfos
» 2018-03-05 23:20:51
Dwie minimalne liczby

» Kurs C++ / FAQNajczęściej spotykane bugi pytanie/odpowiedź, pierwszy punkt, świeżo dopisany..
P-169805
MaikelOO
Temat założony przez niniejszego użytkownika
» 2018-03-06 16:18:07
No jeśli wczytam, że (cin >> n) 'n' to 6 przypuszczam, że ta tablica ma rozmiar 6 już do końca gdyż mimo, że jest to zmienna 'n' to nie jest ona nigdzie modyfikowana w późniejszych wierszach. Jak zresztą napisałem program wyłącza się od momentu gdy poniżej pierwszego "cout << maxi << endl; dopisuje kolejne pętle 'for'. Byłbym wdzięczny gdyby ktoś mi wytłumaczył co w tamtej części programu nie jest logicznego, bo na ten moment naprawdę nie widzę..

I przy okazji byłbym wdzięczny gdyby ktoś napisał właśnie tą drugą część programu bym porównał ją z moją i zobaczył gdzie i jaki błąd popełniłem. Wiem, że są na to inne sposoby, ale jestem pewien, że da się to zrobić tablicą także chciałbym to także wykonać tablicą już do końca.
P-169809
MaikelOO
Temat założony przez niniejszego użytkownika
» 2018-03-06 16:36:11
Okej, doszedłem do tego już sam i temat mogę uznać za zamknięty.

C/C++
#include <iostream>


using namespace std;

int main()
{
   
    int n;
    cin >> n;
    int t[ n ];
    for( int i = 0; i < n; i++ )
         cin >> t[ i ];
   
    int maxi = t[ 0 ];
    int a = 0;
    for( int j = 1; j < n; j++ )
    if( t[ j ] > maxi )
         maxi = t[ j ];
   
    for( int i = 0; i < n; i++ )
    if(( t[ i ] < maxi ) &&( t[ i ] >= a ) )
         a = t[ i ];
   
    cout << a << endl;

Program działa poprawnie i spełnia swoje zadanie. Oczywiście także dziękuje ludziom, którzy udzielili się w tym temacie :)
P-169810
YooSy
» 2018-03-06 16:53:19
To że program działa, nie zmienia faktu, że nadal nieprawidłowo używasz tablicy. Jeśli ma to być tablicabo rozmiarze ustalanym w czasie wykonywania programu, uzyj tablicy dynamicznej.
» Kurs C++ » Poziom 5Zarządzanie pamięcią new, delete lekcja
» Kurs STL, C++Kontener tablicy (std::vector) lekcja

... a oto dowód:
https://wandbox.org/permlink​/1If7dHBmMJzNGn7c.
P-169811
« 1 »
  Strona 1 z 1