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

[C] problem z sortowaniem liczb

Ostatnio zmodyfikowano 2018-01-16 17:29
Autor Wiadomość
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
C/C++
#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 );
}
P-168706
mateczek
» 2018-01-14 16:00:43
o co chodzi w tym kodzie ??
C/C++
double a[ 20 ][ 15 ]; //dlaczego tablica 2D??
int n = 0;
while( fscanf( fin, "%s", & a[ n ] ) == 1 ) n++; //dlaczego czytasz stringi?? co wg ma robić &a[n]==1??

P-168707
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ć
P-168712
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.
P-168719
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.
P-168724
mateczek
» 2018-01-14 20:26:12
poprawiony kod
C/C++
#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 ]; //tablica na 20 liczb;
    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
P-168726
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
P-168734
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??
C/C++
qsort( a, n, sizeof( double ), compare ); //czy tak wygląda sortowaie??
P-168735
« 1 » 2
  Strona 1 z 2 Następna strona