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

Sortowanie nazwisk [C]

Ostatnio zmodyfikowano 2017-02-17 04:51
Autor Wiadomość
Nazgul
» 2017-02-16 03:24:55
Tak, jest względem nazwiska, jest 20 razy coś podobnego, bo starałem się to napisać topornie
czyli
- pobiera liczbe studentow do n
- sprawdza czy n nie jest zbyt duże, jesli jest wychodzi z programu

- potem jest algorytm sortowania bąbelkowego
- sprawdza po kolei kazda pare nazwisk
- sprawdza po kolei kazda litere w nazwiskach
- jezeli litera pierwszego nazwiska jest wyzej w ascii niz litera z drugiego to zamienia

sama zamiana wygląda jakby 500 razy zrobił to samo ale tak naprawdę to jest zrobienie podstawowych rzeczy czyli:
 - utworzenie studenta zamiennika
 - przypisanie do zamiennika imienia i nazwiska pierwszego studenta
 - przypisanie do pierwszego studenta danych drugiego studenta
 - przypisanie do drugiego studenta danych zamiennika

wyjście z programu

I MASZ TO ANALIZOWAĆ AŻ ZROZUMIESZ, BO ZARAZ DO DZIEKANA POJDE ZAGADAC ZEBY CI DOWALIL NA LETNIEJ SESJI!;P
P-157807
Nazgul
» 2017-02-16 03:31:41
Tak da się to ułatwić, dzieląc to na funkcje albo używając funkcji dostarczanych w standardzie C, jednak ja się orientuję typowo w C++, nie w C, dlatego wszystko piszę wykorzystując tylko składnię C;P

Stary.. wysil się trochę, zczaj to co tam jest, bo naprawdę jestem dumny z przejrzystości tego;P
podziel sobie to na funkcje: sortuj(...), zamien(...) oraz kopiuj_tablice(...) i będziesz miał wszystko jak na dłoni
P-157808
Nazgul
» 2017-02-16 03:35:12
a co do optymalizacji tego kodu dla procka.. to jedyne co mógłbym zrobić(nie wykorzystując wskaźników) to stworzyć jeszcze jedną tablicę, która miałaby posortowane że nr1 to jest nr4 z naszej tablicy studentów, 2 to jest nr2, 3 to jest nr1, itp. ale to by ci chyba mocno zaciemniło kod(chociaż nie wiem.. każdy ma trochę inną percepcję jak patrzy na czyjś kod;D)
P-157809
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-02-16 03:38:34
Nie no popatrzyłem i da się to zrozumieć :D
Prześpię się z tym, a rano zobaczę czy to rozumiem, a jak nie to wrzucę tam komentarze jakieś żebym wiedział jak się z kodu wytłumaczyć xD

A mam jeszcze inne zadanie w którym większość zrobiłem ale proszą mnie o coś takiego:
W zadaniu wyodrębnij plik z wszystkimi funkcjami sortowania (bąbelkowe, karciane, szybkie, proste)

Wszystkie funkcje mam wypisane w programie tj:

C/C++
void sortowanie_karciane( int tablica[], int licznik ) {
    int pom, j;
    for( int i = 1; i < licznik; i++ )
    {
       
        pom = tablica[ i ];
        j = i - 1;
       
       
        while( j >= 0 && tablica[ j ] > pom )
        {
            tablica[ j + 1 ] = tablica[ j ];
            --j;
        }
        tablica[ j + 1 ] = pom;
    }
}

void sortowanie_babelkowe( int tablica[], int licznik )
{
    for( int i = 0; i < licznik - 1; ++i )
    {
        for( int j = 0; j < licznik - 1 - i; ++j )
        {
            if( tablica[ j ] > tablica[ j + 1 ] )
            {
                int temp;
                temp = tablica[ j ];
                tablica[ j ] = tablica[ j + 1 ];
                tablica[ j + 1 ] = temp;
            }
        }
    }
}

void sortowanie_szybkie( int tablica[], int lewy, int prawy )

{
    int v = tablica[( lewy + prawy ) / 2 ];
    int i, j, x;
    i = lewy;
    j = prawy;
    do {
        while( tablica[ i ] < v ) i++;
       
        while( tablica[ j ] > v ) j--;
       
        if( i <= j ) {
            x = tablica[ i ];
            tablica[ i ] = tablica[ j ];
            tablica[ j ] = x;
            i++; j--;
        }
    } while( i <= j );
   
    if( j > lewy ) sortowanie_szybkie( tablica, lewy, j );
   
    if( i < prawy ) sortowanie_szybkie( tablica, i, prawy );
   
}

void sortowanie_proste( int tablica[], int licznik )
{
    int i, j, k;
    for( i = 0; i < licznik; i++ ) {
        k = i;
        for( j = i + 1; j < licznik; j++ ) if( tablica[ j ] < tablica[ k ] ) k = j;
       
        int temp;
        temp = tablica[ k ];
        tablica[ k ] = tablica[ i ];
        tablica[ i ] = temp;
    }
}


Jak wyodrębnić plik?
Mam zrobić nowy plik .c, a w nim wstawić same funkcje? A w zadaniu głównym wstawić #include "nazwa pliku" ?
P-157810
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-02-16 03:40:18
No ja ogólnie właśnie miałem taką wizję, że po utworzeniu tablicy ze studentami będzie druga tablica z takimi numerkami po prostu którymi będzie się łatwiej żąglowało :D

P-157811
Nazgul
» 2017-02-16 03:50:10
C/C++
#include <stdio.h>
#include <stdlib.h>

const unsigned int MAX_DLUGOSC_WYRAZU = 25;
const unsigned int MAX_LICZBA_STUDENTOW = 30;


int main() {
    unsigned int n = 0;
    char tablica_studentow[ 2 ][ MAX_LICZBA_STUDENTOW ][ MAX_DLUGOSC_WYRAZU ];
    unsigned int posortowane_indexy_studentow[ MAX_LICZBA_STUDENTOW ];
   
    for( unsigned int i = 0; i < MAX_LICZBA_STUDENTOW; i++ )
         posortowane_indexy_studentow[ i ] = i;
   
    printf( "Podaj liczbe studentow: " );
    scanf( "%d", & n );
    if( n > MAX_LICZBA_STUDENTOW )
         return 1;
   
    for( unsigned int i = 0; i < n; i++ )
    {
        printf( "\nPodaj imie studenta nr %d: ", i + 1 );
        scanf( "%24s", & tablica_studentow[ 1 ][ i ][ 0 ] );
        printf( "Podaj nazwisko studenta nr %d: ", i + 1 );
        scanf( "%24s", & tablica_studentow[ 0 ][ i ][ 0 ] );
    }
   
   
   
    unsigned int rozmiar = n;
    while( rozmiar > 1 )
    {
        for( unsigned int i = 0; i < rozmiar - 1; i++ )
        {
            for( unsigned int j = 0; j < MAX_DLUGOSC_WYRAZU; j++ )
            {
                if( tablica_studentow[ 0 ][ posortowane_indexy_studentow[ i ] ][ j ] > tablica_studentow[ 0 ][ posortowane_indexy_studentow[ i + 1 ] ][ j ] )
                {
                    unsigned int zamiennik = posortowane_indexy_studentow[ i ];
                    posortowane_indexy_studentow[ i ] = posortowane_indexy_studentow[ i + 1 ];
                    posortowane_indexy_studentow[ i + 1 ] = zamiennik;
                }
            }
        }
        rozmiar--;
    }
   
    return 1;
}
Proszę Cię bardzo, masz żonglowanie;P

(jest liczba studentów, a nie ilość.., pisze się żonglować, nie żąglowaćxD)
P-157812
Nazgul
» 2017-02-16 03:52:53
a co do tego drugiego zadania o które pytasz, to nie mam innego pomysłu o co może chodzić niż ten co już podałeś
P-157813
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-02-16 03:53:53
Dobra kocham Cię :D

Tak. Moja głowa wysiada już i ortografia się wali :D Wybacz :D

Ten kod mi z pewnością bardziej przypasuje. Lecę spać i dzięki za wszystko :)
Dzięki tobie może pewien student zaliczy ten przedmiot :DD
P-157814
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona