kryś98 Temat założony przez niniejszego użytkownika  | 
[C] problem z sortowaniem liczb » 2018-01-14 15:48:14 Witam, mam za zadanie napisać program, który sortuje ułamki. Niestety mój program nie działa #include <stdio.h> #include <stdlib.h>
  int compare( const void * a, const void * b );
  int main() {     FILE * fin = fopen( "liczby.txt", "r" );     double a[ 20 ][ 15 ];     int n = 0;     while( fscanf( fin, "%s", & a[ n ] ) == 1 ) n++;          fclose( fin );     qsort( a, 21, sizeof( double ), compare );     FILE * fout = fopen( "posortowaneLiczby.txt", "w" );     int i;     for( i = 0; i < n; i++ ) fprintf( fout, "%s\n", a[ i ] );          fclose( fout );     return 0; }
  int compare( const void * a, const void * b ) {     return( *( double * ) a - *( double * ) b ); }
   | 
 | 
mateczek  | 
» 2018-01-14 16:00:43 o co chodzi w tym kodzie ?? double a[ 20 ][ 15 ];  int n = 0; while( fscanf( fin, "%s", & a[ n ] ) == 1 ) n++; 
 
   | 
 | 
kryś98 Temat założony przez niniejszego użytkownika  | 
» 2018-01-14 17:21:09 Mój błąd, zamiast %s powinno być %lf. A co do reszty to tak robiliśmy na zajęciach. Nie wiem gdzie tu jest błąd i dlaczego to nie chce działać  | 
 | 
mateczek  | 
» 2018-01-14 18:21:57  | Nie wiem gdzie tu jest błąd |  
  pokaż jak wygląda plik z danymi do sortowania bo ten kod wydaje się nie mieć sensu !!! Pierwsze pytanie "Dlaczego tablica 2D" o wymiarach 20X15 Co chciałeś osiągnąć??  | A co do reszty to tak robiliśmy na zajęciach |  
  Ani to argument ani wyjaśnienie.    | 
 | 
kryś98 Temat założony przez niniejszego użytkownika  | 
» 2018-01-14 19:17:46 Chcę sortować liczby typu:  0.6734 -0.5678 0.002322 itd.  | 
 | 
mateczek  | 
» 2018-01-14 20:26:12 poprawiony kod  #include <stdio.h> #include <stdlib.h>
  int compare( const void * a, const void * b ) {     return( *( double * ) a - *( double * ) b ); } int main() {     FILE * fin = fopen( "liczby.txt", "r" );     double a[ 20 ];      int n = 0;     while( fscanf( fin, "%lf", & a[ n ] ) == 1 ) {         n++;     }     fclose( fin );     qsort( a, n, sizeof( double ), compare );     FILE * fout = fopen( "posortowaneLiczby.txt", "w" );     int i;     for( i = 0; i < n; i++ ) fprintf( fout, "%lf ", a[ i ] );          fclose( fout );     return 0; }
  //edit z tym &a[n]==1 nie zauważyłem nawiasu w niesformatowanym kodzie moja wina :) szukałem sensu w użyciu tablicy 2D i nic mi się nie zgadzało   | 
 | 
kryś98 Temat założony przez niniejszego użytkownika  | 
» 2018-01-14 21:15:55 Program nadal nie działa, w wyniku wyrzuca same zera  | 
 | 
mateczek  | 
» 2018-01-14 21:46:28 czy w qSort zmieniłeś stałą 21 na zmienną n?? (bo tam też był błąd??). Czy ilość danych do posortowania nie przekracza 20 liczb?? qsort( a, n, sizeof( double ), compare ); 
   | 
 | 
|  « 1 »  2 |