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 |
|
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 |
|
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) |
|
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: 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" ? |
|
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
|
|
Nazgul |
» 2017-02-16 03:50:10 #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) |
|
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ś |
|
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 |
|
1 « 2 » 3 4 |