Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-01-25 21:58:52

  mxc - Nowy użytkownik

mxc
Nowy użytkownik
Zarejestrowany: 2011-01-25

Sortowanie alfabetyczne C

Witam, od razu zaznaczę, że jestem kompletnym laikiem jeżeli chodzi o programowanie, a muszę zrobić na najbliższe dni program który kopiuje plik tekstowy i zapisuje pod inną nazwą sortując słowa wewnątrz kolejnością alfabetyczną. O ile program kopiujący udało mi się zrobić

Kod:

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
    FILE *in, *out;
    char ch, b;

    
    b=argv[3][0];
    
    if((in=fopen(argv[1], "rb")) == NULL) {
     printf("I can't see any file named that way! \n");
     exit(1);
     }
        
    in=fopen(argv[1], "r");
    out=fopen(argv[2], "w");

    while(1)
    {
    ch=fgetc(in);
        if (ch==b)
        ch='*';
    if(ch==EOF)
        break;
        else
        putc (ch, out);
    
    }
    printf("File copied succesfully!");
    fclose(in);
    fclose(out);
}

O tyle nie mam bladego pojęcia jak posortować słowa wewnątrz tego programu alfabetycznie. Na forum znalazłem jak można to zrobić w C++, ale nic mi to nie mówi, gdyż nie rozumiem tego języka.
Proszę o pomoc.

Offline

 

#2  2011-01-25 23:02:31

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Sortowanie alfabetyczne C

nie zrobisz tego bezposrednio w takim kodzie ... sortowanie wymaga wczytania calosci danych do pamieci i manipulowania nimi lub kilkukrotnego czytania danych wejsciowych (moznaby zainteresowac sie mmap)... a tu masz kopiowanie znak po znaku ...

przyjrzyj sie dzialaniu np. programu sort ... mozesz tez popatrzec w zrodla jak to tam jest zrobione ...

jezeli to ma po prostu za dzialac (i nie ma wymogow do tego jak to ma byc realizowane) to moznaby sie pokusic o pipe(), fortk() i exec("sort") ...


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#3  2011-01-25 23:14:54

  Piotr3ks - Też człowiek :-)

Piotr3ks
Też człowiek :-)
Skąd: Białystok
Zarejestrowany: 2007-06-24

Re: Sortowanie alfabetyczne C

No ja rozwiązuje właśnie podobny problem.
Mój pomysł jest taki: porównywać stringi poprzez strcmp(string1, string2) i badać co funkcja zwróci. I ustawiać w ten sposób, żeby różnice tego co zwróci strcmp() były jak najmniejsze pomiędzy kolejnymi elementami.
http://pl.wikibooks.org/wiki/C/strcmp

Ostatnio edytowany przez Piotr3ks (2011-01-25 23:17:30)

Offline

 

#4  2011-01-25 23:43:32

  k4misiek - Green Reaper

k4misiek
Green Reaper
Skąd: Poznań
Zarejestrowany: 2006-11-11

Re: Sortowanie alfabetyczne C

Nie umiem programować ale... może wykorzystaj do tego tablice ASCII?
Znaki A-Z są od 65 do 90 i a-z od 97 do 122, wtedy wykorzystując stringi jakoś to powinno zadziałać :)


You are registered as user #464141 with the Linux Counter

Offline

 

#5  2011-01-26 11:26:17

  gindek - Zubr, bydle na etacie.

gindek
Zubr, bydle na etacie.
Skąd: Z puszczy.
Zarejestrowany: 2008-12-08

Re: Sortowanie alfabetyczne C

k4misiek napisał(-a):

Nie umiem programować ale... może wykorzystaj do tego tablice ASCII?
Znaki A-Z są od 65 do 90 i a-z od 97 do 122, wtedy wykorzystując stringi jakoś to powinno zadziałać :)

i to jest droga do ... ocalenia ;].

z czego masz ten program i na kiedy  ? ( co studiujesz ).

tu masz kod
http://www.matematyka.pl/96672.htm
http://forum.mapaogame.net/viewtopic.php?t=986

Ostatnio edytowany przez gindek (2011-01-26 11:26:51)


" Wojny przychodzą i odchodzą, a moi żołnierze są wieczni"


"Zbuduj mały, dziarski router z udostępnionych przez prowadzącego części od Kamaza?"

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)