łączenie tablic

0

Jak połączyć dwie dynamiczne tablice w jedną dynamiczna S3 ?

#include <iostream>
#include <cstring>
using namespace std;
#define T_SIZE 50

int main()
{
    int t,n;
    char *S1=new char[T_SIZE];
   char  *S2=new char[T_SIZE];

    cin >> t;
    cin.getline(S1,T_SIZE);
    for(int i=0;i<t;i++)
    {
        cin.getline(S1,T_SIZE);
        cin.getline(S2,T_SIZE);
    }

    return 0;
}

0

Co znaczy 'połączyć tablice'?
Opis funkcji z biblioteki której użyłeś: http://www.cplusplus.com/reference/cstring/

0

chce uzyskac efekt sortowania alfabetycznego np:

3
BaNaN
cytryna
marchew
ma
pomidor
pomidor

Wyjście:

BaNaN
cytryna

ma
marchew

pomidor
pomidor

czy dobrym pomysłem jest polaczenie tych dwoch tablic w jedną? czy moze mozna to zrobic lepszym sposobem?

0

To jest C++. Ja nie bawiłbym się w implementowanie samemu wszystkiego tylko użył:

0

nie mogę
"Do wczytania danych wejściowych wykorzystaj dynamicznie przydzielony fragment pamięci. Do iteracji po przetwarzanej tablicy znaków użyj wskaźnika".

0

Czyli jednak ręcznie.
Znając ilość danych stwórz dynamicznie tablicę wskaźników na ciągi i w pętli dynamicznie twórz każdy ciąg.
Potem to już tylko jakiś algorytm sortowania...

0
#include <iostream>
#include <cstring>
using namespace std;
#define T_SIZE 50



void Sorting(char* names,int number)
{
    char lastname;
    int i;
    int j;
    for(i=1; i<number; ++i)
    {
        lastname=names[i];
        for(j=i-1; j>=0 && names[j]>lastname; --j)
        {
            names[j+1]=names[j];
        }
        names[j+1]=lastname;

    }
}
int main()
{
    int t,n;
    char *S1=new char[T_SIZE];
    char  *S2=new char[T_SIZE];

    cin >> t;
    cin.getline(S1,T_SIZE);
    for(int i=0; i<t; i++)
    {
        cin.getline(S1,T_SIZE);
        cin.getline(S2,T_SIZE);
    }

    char *S3=new char[T_SIZE*2];
    for(int i=0; i<T_SIZE; i++)
    {
        S3[i]=S1[i];
        S3[i+T_SIZE]=S2[i];
    }
    Sorting(S3,T_SIZE*2);
    for (int i = 0; i < T_SIZE*2; i++) {
    cout << S3[i] << endl;
  }

    return 0;
}

Napisałem cos takiego ale niestety to nie działa zbyt dobrze.. Jakies rady ?

0

Użyj debuggera lub zastanów się jak wygląda S3. Dla ułatwienia mogą być małe wartości T_SIZE (np. 5) i ciągi 'kot', 'ala'.

0

napisałem cos takiego

#include <iostream>
#include <cstring>
using namespace std;
void Sorting(string names[],int number)
{
    string lastname;
    int i;
    int j;
    for(i=1; i<number; ++i)
    {
        lastname=names[i];
        for(j=i-1; j>=0 && names[j]>lastname; --j)
        {
            names[j+1]=names[j];
        }
        names[j+1]=lastname;

    }
}
int main()
{
    int t;
    cin>>t;
    string *st=new string[t*2];
    for(int i=0; i<t*2; i++)
    {
        cin>>st[i];
    }
    Sorting(st, t*2);

        for (int i = 0; i < t*2; i+=2)
        {
            cout << st[i] << endl;
            cout << st[i+1] << endl;
            cout << "--------------------" << endl;
        }


    return 0;
}

chciałbym uzyskac efekt taki ze pary słów są wewnętrznie posortowane np:
2
dd
cc
aa
bb

cc
dd

aa
bb

0

chciałbym uzyskac efekt taki ze pary słów są wewnętrznie posortowane np:

W Sorting() porównuj i ewentualnie zamieniaj miejscami pary stringów.
names[0] z names[1], names[2] z names[3], ...

0

nie za bardzo wiem jak to w kodzie napisac moglbys cos wiecej podpowiedziec?

0

Pętla podobna jak przy wyświetlaniu.
Jeżeli string parzysty (i) jest leksykalnie większy niż nieparzysty (i+1) to zamień je miejscami.

0
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int t;
    cin>>t;
    string *st=new string[t*2];
    for(int i=0; i<t*2; i++)
    {
        cin>>st[i];
    }
    for (int i = 0; i < t*2; i+=2)
    {
        if(st[i].compare(st[i+1])<0)
        {
            cout << st[i] << endl;
            cout << st[i+1] << endl;
        }
        else
        {
            cout << st[i+1] << endl;
            cout << st[i] << endl;
        }
        cout << "--------------------" << endl;
    }
    return 0;
}

wrzucajac ten program do pewnego systemu.. wyswietla mi komunikat ze bledna odpowiedz w czym moze byc problem ?

0

kazda para powinna byc wyswietlona w porządku leksykograficznym i te separatory musza byc bo tak jest w tresci

0

Napisz program, który wczyta ze standardowego wejścia liczbę całkowitą N, a następnie N par słów składających się z małych oraz wielkich liter alfabetu łacińskiego. Każde słowo znajduje się w oddzielnym wierszu, zaś jego długość nie przekracza 50 znaków. Każda wczytana para słów powinna zostać wydrukowana na standardowym wyjściu w porządku leksykograficznym. Porównanie powinno być niezależne od wielkości liter w słowach. Po każdej parze słów program powinien wydrukować na standardowe wyjście separator złożony z 20 znaków '-'.

Uwaga: Do wczytania danych wejściowych wykorzystaj dynamicznie przydzielony fragment pamięci. Do iteracji po przetwarzanej tablicy znaków użyj wskaźnika.

1

Prawdopodobnie chodzi o to: "Porównanie powinno być niezależne od wielkości liter w słowach."

0

A wiesz moze jak to zabezpieczyć?

1 użytkowników online, w tym zalogowanych: 0, gości: 1