• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program z sortowaniem przez wstawianie ciągów

Object Storage Arubacloud
+2 głosów
127 wizyt
pytanie zadane 13 maja 2021 w C i C++ przez ktoś123 Nowicjusz (180 p.)

Do programu wpisywane jest 1000 kodów zaczynających się od litery, po czym następuje 9 cyfr. Wczytaj te kod. Później posortuj rosnąco według wartości liczby, którą tworzą cyfry(bez uwagi na litery). Napisz własny algorytm sortowania, jedną z metod .(sortowanie bąbelkowe i za pomocą wstawiania). 

Mam sortowanie przez wstawianie:
 

void insertSort(int tablica[], int Size)
{
    int i, j;
    int temp;
    for (i = 1; i < Size; i++)
    {
    temp = table[i];
    for (j = i-1; (j >= 0) && (temp < table[j]); j--) table[j+1] = table[j];    
    table[++j] = temp;
    }
}



Na razie kod prezentujący się tak, ale coś nie działa:

 

#include <bits/stdc++.h>

using namespace std;
string napis;


void insertSort(int tablica[], int Size)
{
    int i, j;
    int temp;
    for (i = 1; i < Size; i++)
    {
    temp = table[i];
    for (j = i-1; (j >= 0) && (temp < table[j]); j--) table[j+1] = table[j];    
    table[++j] = temp;
    }
}

int main()
{
    for(int i=0;i<1000;i++) cin>>tab[i];

    insertSort( tablica[1000], Size);
    cout << napis;
    return 0;
}



Z góry dzięki za pomoc!smiley

1 odpowiedź

+1 głos
odpowiedź 13 maja 2021 przez TOM_CPP Pasjonat (22,640 p.)

Jeżeli będziesz musiał wpisać ręcznie tysiąc liczb

for(int i=0;i<1000;i++) cin>>tab[i];

to będziesz musiał poświęcić dużo czasu na testowanie. Poza tym wczytywane powinny być także litery, a nie tylko cyfry.

Zobacz jak można to zrobić używając sortowania z biblioteki std.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct code
{
    char letter {};
    int number {0};
    bool operator<( const code& c )
    {
        return number<c.number;
    }
};

ostream& operator<<( ostream& out , const code& c )
{
    out << c.letter << c.number;
    return out;
}

istream& operator>>( istream& in , vector<code>& data )
{
    string input;
    in >> input;
    if( input.size()>1 ) data.push_back( { input[0] , stoi( string{begin(input)+1,end(input)} ) } );
    return in;
}

void custom_sort( vector<code>& data )
{
    // do zrobienia - traktuj data jak tablicę
}

int main()
{
    vector<code> data;
    cin >> data >> data; //wczytanie dwóch kodów - użyj pętli aby wczytać więcej
    sort( begin(data) , end(data) ); // zamień sobie tutaj na własne sortowanie - custom_sort
    for( const auto& c : data ) cout << c << endl;
}

 

komentarz 13 maja 2021 przez ktoś123 Nowicjusz (180 p.)

Dziękuję bardzo!smiley

komentarz 14 maja 2021 przez VBService Ekspert (253,400 p.)
edycja 14 maja 2021 przez VBService

Podobne pytania

0 głosów
1 odpowiedź 460 wizyt
0 głosów
0 odpowiedzi 161 wizyt
0 głosów
0 odpowiedzi 498 wizyt

92,579 zapytań

141,427 odpowiedzi

319,654 komentarzy

61,962 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...