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

Sortowanie liter / Bubble Sorting

VPS Starter Arubacloud
0 głosów
292 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez MS Początkujący (430 p.)

Witam, 

za zadanie mam napisać kod, który pozwoli wygenerować  20 losowych liter z danego przedziału (np. od a do g). Z tym że, użytkownik na początku ustala dany przedział. Następnie program ma posortować litery w alfabetycznej kolejności przy użyciu sortowania bąbelkowego. Mój kod wygląda następująco : https://pastebin.com/Jv1wxdcg

wyświetla losowe liczby, ale ustalam w kodzie przedział, a nie przy użyciu scanf. Poza tym nie wiem w jaki sposób posortować te litery. Proszę o jak najszybszą odpowiedź.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    char alphabet[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
     'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 's',
     't', 'u', 'v', 'w', 'x', 'y', 'z'};
    
     char  LowerBound, HigherBound, letters;
     
     printf("Input range of letters : \n");
     scanf("%c %c", &LowerBound, &HigherBound);
    
    char randChar = "\n", swap;
    int counter = 0, numbers;
    int randNum = 0;
    
    int i, j;
    srand(time(NULL));
    for (counter = 0; counter < 20; counter++)
    {
        randNum = 26 * (rand() / (RAND_MAX + 1.0));
        randNum = randNum + 97;
        randChar = (char) randNum;
        printf("Random char: %c\n", randChar);

    }

    
    

}

 

1 odpowiedź

0 głosów
odpowiedź 28 listopada 2018 przez Bondrusiek Maniak (61,370 p.)

Witam

wydaje mi się że źle obliczasz wartości char w pętli.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    char alphabet[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
     'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 's',
     't', 'u', 'v', 'w', 'x', 'y', 'z'};

     char  LowerBound, HigherBound, letters;

     printf("Input range of letters : \n");
     scanf("%c %c", &LowerBound, &HigherBound);

    char randChar = '\n', swap; // dla char używa się ' a dla napisów "
    int counter = 0, numbers;
    int randNum = 0;

    int i, j;
    srand(time(NULL));

    for (counter = 0; counter < 20; counter++)
    {
        randNum = (int)LowerBound + (rand() % (int)(HigherBound - LowerBound) );
//Wartość jest większa lub równa LowerBound i należy do niej dodać ilość elementów w //granicy
        randChar = (char) randNum;
        printf("Random char: %c\n", randChar);

    }

    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 130 wizyt
0 głosów
2 odpowiedzi 233 wizyt
0 głosów
1 odpowiedź 1,297 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...