Nazgul |
» 2017-02-16 04:01:58 Ależ nie ma za co, też coś z tego miałem(dobrą zabawę z ciśnięcia Ci;D) |
|
nowawieza Temat założony przez niniejszego użytkownika |
» 2017-02-16 13:10:50 To z #include w innym zadaniu już zrobiłem i działa! :D Ale tutaj jeszcze potrzebuję wypisywania tej tablicy. Nie wiem jak wypisać tablicę, która zawiera napisy, bo wypisuje mi cyfry ;p W C++ wystarczy cout, a tutaj trzeba się bawić te %d itd ;/ #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 posortowani_studenci[ MAX_LICZBA_STUDENTOW ]; for( unsigned int i = 0; i < MAX_LICZBA_STUDENTOW; i++ ) posortowani_studenci[ 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 ][ posortowani_studenci[ i ] ][ j ] > tablica_studentow[ 0 ][ posortowani_studenci[ i + 1 ] ][ j ] ) { unsigned int zamiennik = posortowani_studenci[ i ]; posortowani_studenci[ i ] = posortowani_studenci[ i + 1 ]; posortowani_studenci[ i + 1 ] = zamiennik; } } } rozmiar--; } for( int i = 0; i < n; ++i ) { printf( "%c %c\n", tablica_studentow[ 1 ][ i ][ 0 ], tablica_studentow[ 0 ][ i ][ 0 ] ); } return 1; }
Tak opierdzielałem się w szkole :D %d - liczby, %c - znaki. Ale jak będzie dla wyrazów? %s nie pasuje, a myślałem, że to będzie dla stringów :/ A poza tym to nie wiem czy dobrze wybrałem co ma być wypisywane ale chyba tak :d Jak nie to mnie poprawcie :D |
|
michal11 |
» 2017-02-16 13:18:53 |
|
nowawieza Temat założony przez niniejszego użytkownika |
» 2017-02-16 13:38:39 To dlaczego mi wysypuje program gdy daję: for( int i = 0; i < n; ++i ) { printf( "%s %s\n", tablica_studentow[ 1 ][ i ][ 0 ], tablica_studentow[ 0 ][ i ][ 0 ] ); }
|
|
michal11 |
» 2017-02-16 13:41:16 bo chcesz wypisać jeden znak tablica_studentow[ 1 ][ i ][ 0 ] . Ponieważ to jest tablica charów więc odwołanie się przez wszystkie indeksy to uzyskanie jednego znaku. |
|
nowawieza Temat założony przez niniejszego użytkownika |
» 2017-02-16 20:09:26 To teraz mam zmienić całą tablicę na tablicę stringów? Zawsze myślałem, że to zadanie powinno się zacząć tablicą znaków, a potem majstrować przy wypisywaniu.
Szukałem w internecie i nie znalazłem wypisania tego z tablicy :/ Jedynie jakaś nowa dla mnie funkcja strcpy. Może tak by dało radę? Ale nie powinienem tego użyć raczej :/ |
|
michal11 |
» 2017-02-16 22:26:37 int main() { char tab[ 10 ] { "cstring" }; printf( "%c | %s\n", tab[ 0 ], tab ); char tab2[ 2 ][ 10 ] { "cstring", "cstring" }; printf( "%c | %s\n", tab2[ 0 ][ 0 ], tab2[ 0 ] ); char tab3[ 3 ][ 2 ][ 10 ] { { "cstring", "cstring" } , { "cstring", "cstring" } , { "cstring", "cstring" } }; printf( "%c | %s\n", tab3[ 0 ][ 0 ][ 0 ], tab3[ 0 ][ 0 ] ); return 0; }
edit. Formatowanie trochę się rozjechało ale powinieneś zrozumieć ten kod i różnice w wypisywaniu tablic wielowymiarowych. |
|
nowawieza Temat założony przez niniejszego użytkownika |
» 2017-02-16 23:05:54 Dobra, myślę, że choć trochę zrozumiałem dzięki tobie jak działa to wypisywanie. Jednak nie mogę się odnaleźć w tej tablicy... for( int i = 0; i < n; ++i ) { printf( "%s%s\n", tablica_studentow[ 1 ][ i ], tablica_studentow[ 0 ][ i ] ); }
Jak daję coś takiego to wyrazy nie są posortowane. A jak daję tak: for( int i = 0; i < n; ++i ) { printf( "%s%s\n", tablica_studentow[ 0 ][ i ], tablica_studentow[ 1 ][ i ] ); }
To imię z nazwiskiem jest zamienione miejscami. Robię to na wszystkie sposoby i nie daje rady. A jak daję to dla 5 osób to program wywala ;/ |
|
1 2 « 3 » 4 |