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

question-closed Rozwiązane zadanie

Object Storage Arubacloud
0 głosów
154 wizyt
pytanie zadane 20 maja 2020 w C i C++ przez Liryk Użytkownik (650 p.)
otagowane ponownie 21 maja 2020 przez Liryk
Rozwiązane zadanie, dzięki
komentarz zamknięcia: rozwiazane

2 odpowiedzi

0 głosów
odpowiedź 20 maja 2020 przez LuQ232 Mądrala (7,200 p.)
wybrane 20 maja 2020 przez Liryk
 
Najlepsza

Zacznijmy od wczytania całej lini wpisanej przez użytkownika. Zrealizujemy to w taki sposób:

#include <iostream>
#include <string>

int main()
{
    std::string text;
    std::cout << "Enter text to convert to ASCII: ";
    std::getline(cin, text);
    return 0;
}

Gdy już masz wczytany tekst zróbmy sobie funkcje zmieniającą tekst na liczby ASCII:

void text_to_ascii(std::string txt)
{
	for(int i=0;i<txt.length();i++)
	{
		char x = txt.at(i);
		std::cout<<int(x)<<" ";
	}	
}

Resztę pozostawiam w Twoich rękach. Zapytasz co dalej? Dobrym rozwiązaniem będzie przesłanie do funkcji tablicy na przechowanie tych liczb ASCII. A potem wystarczy posortować tą tablice. Z tym sobie poradzisz. Powodzenia!

komentarz 20 maja 2020 przez Liryk Użytkownik (650 p.)
Dziękuje, o to mi własnie chodziło, dalej raczej sobie poradzę
komentarz 20 maja 2020 przez Liryk Użytkownik (650 p.)
edycja 21 maja 2020 przez Liryk
aaa
komentarz 20 maja 2020 przez Liryk Użytkownik (650 p.)
for(int g=0; g<x; g++) cout<<tab[y]<<" ";

Wystarczy takie coś i już crashuje 

komentarz 21 maja 2020 przez LuQ232 Mądrala (7,200 p.)

Trochę namieszałeś.

int y, tab[y];
     

tworzysz tablicę intów o nieznanej wielkości i tutaj pewnie jest błąd.

Powinno być

int tab[txt.size()];

Potem przy sortowaniu odwołujesz sie do tab[y] oraz tab[y+1] gdzie tak naprawdę nie inkrementujesz y czyli nie przechodzisz po kolejnych elementach. Co ciągnie kolejne błędy itp itd.

Przerobiłem trochę program po swojemu i oto wynik: 


#include <iostream>
#include <string>
#include <cstdlib>
#include <algorithm>

using namespace std;

void txt_ascii(string txt)
{

    int tab[txt.size()]; // tworzy tablice o odpowiedniej dlugosci


    cout<<endl;

    for(int x=0; x<txt.size(); x++)
    {
        char d = txt.at(x);
        cout<<int(d)<<" ";
        tab[x] = int(d);
    }
    cout<<endl;
    sort(tab,tab+txt.size()); // sortuje tablice rosnąco

    for(int x=0; x<txt.size(); x++)
    {
        cout<<tab[x]<<" ";
    }

}

int main()
{
    string text;
    cout<<"Podaj tekst ktory zostanie przesortowany i przekonwertowany do ASCII: ";
    getline(cin, text);



    txt_ascii(text);

    return 0;
}



Dodałem #include <algorithm> aby móc użyć funcji sort() tam zawartej sortującej tablice. Oczywiście możesz posortować swoim algorytmem, nic nie stoi na przeszkodzie. 

0 głosów
odpowiedź 20 maja 2020 przez VBService Ekspert (254,260 p.)
edycja 20 maja 2020 przez VBService

#include <cstdio>
#include <iostream>
#include <string>

using namespace std;

void sortowanie_babelkowe(int* tab, int n)
{
    for (int i = 1; i < n; i++)
    {
        for (int j = n - 1; j >= 1; j--)
        {
            if (tab[j] < tab[j - 1])
            {
                int bufor;
                bufor = tab[j - 1];
                tab[j - 1] = tab[j];
                tab[j] = bufor;
            }
        }
    }
}

void wypisz_tablice( int tab[], int ile )
{
    for(int indeks = 0; indeks <= ile; indeks++)
    {
         cout << tab[indeks] << " ";
    }
}

int main()
{
  string tekst;
  
  cout << endl;
  cout << "Wprowadź dowolną ilość liter małych i dużych, znaków specjalnych, liczb." << endl;
  // symulujemy wprowadzenie znaków
  tekst = "fgH9=k0G-m";
  // getline (cin, tekst);
  cout << "Wprowadzone znaki: " << tekst << endl;
  
  int tekst_size = tekst.length() -1;
  char * tznak = new char[tekst_size];
  int * tascii = new int[tekst_size];
  
  for (int index = 0; index <= tekst_size; index++)
  {
      tznak[index] = tekst[index];
      tascii[index] = tznak[index];
  }
  
  cout << "Wprowadzone znaki w kodzie ascii: ";
  wypisz_tablice(tascii,tekst_size);
  cout << "" << endl;
  
  sortowanie_babelkowe(tascii,tekst_size);
  
  cout << "Wprowadzone znaki w kodzie ascii posortowane: ";
  wypisz_tablice(tascii,tekst_size);
  cout << "" << endl;  
  
  return 0;
}

Wynik:


Wprowadź dowolną ilość liter małych i dużych, znaków specjalnych, liczb.
Wprowadzone znaki: fgH9=k0G-m
Wprowadzone znaki w kodzie ascii: 102 103 72 57 61 107 48 71 45 109
Wprowadzone znaki w kodzie ascii posortowane: 45 48 57 61 71 72 102 103 107 109

                                                                    
...Program finished with exit code 0                             
Press ENTER to exit console.

Kod on-line: tutaj

Funkcja sortowanie_babelkowe() i wypisz_tablice() zapożyczone z posta: wink
sortowanie bombelkowe tablicy 40 elementowej

Podobne pytania

0 głosów
1 odpowiedź 437 wizyt
0 głosów
0 odpowiedzi 101 wizyt

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 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!

...