sortowanie/zapis do plikow/ C

Odpowiedz Nowy wątek
2013-03-13 22:35
0

Witam,

Mam mały problem :P nie ogarniam wql programowania a mam do napisania następujący program;

Stwórz plik z jakimiś danymi np. warszawa
12,9
12323
kajak
11011
Bonus
koniec
Ala
123,23
44421
98
Wrota
Mana
75434
876,435
duch
Start

następnie posortuj je tak by w jednym pliku znajdowały się wyrazy rozpoczynające się z dużej litery, w drugim z malej, w trzecim liczby rzeczywiste a w czwartym całkowite.

Nie mam zielonego pojęcia jak to zrobić :( coś tam próbowałam... wstawiam moja probe ale proszę nie śmiejcie się bo ja naprawdę nie ogarniam tych spraw :D

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

int main(int argc, char *argv[])
{
char text[30], znak;

FILE otw, parz, niep, zdu, *zma;
otw=fopen("dane.txt", "r");
parz=fopen("parzyste.txt", "w");
niep=fopen("nieparzyste.txt", "w");
zdu=fopen("duzej.txt", "w");
zma=fopen("malej.txt", "w");

while(fscanf(otw, "%s", text)!=EOF)
{

}

close(otw);
close(parz);
close(niep);
close(zdu);
close(zma);

tu chciałam na razie stworzyć tylko te 4 pliki do zapisu

zakładając temat wpisanie jako tagu kropki jest naprawdę genialnym posunięciem i świadczy o umiejętności czytania ze zrozumieniem... - byku_guzio 2013-03-14 00:20

Pozostało 580 znaków

2013-03-13 22:50
0

to jest całkiem proste jakby się zastanowić
wczytujesz do bufora kolejne linie i sprawdzasz:

  1. czy jest przecinek w zapisie.
    jak tak, to jest to liczba rzeczywista
  2. czy składa sie z samych liczb
    wtedy jest całkowita
  3. później sprawdzasz wielkość pierwszej litery
    i odpowiednio rozdysponowujesz pomiędzy plikami
Dzięki, że odpowiadasz :) . Całkiem proste dla kogoś kto to rozumie :P Ja programowania uczę się dopiero od roku a nasz nauczyciel wql nam nie tłumaczył od podstaw niczego tylko leciał z programem bo "powinniśmy miec juz to w gimnazjum" -.- . Rozumiem to co napisałeś, sama już wcześniej to rozważałam tylko problem tkwi właśnie w tym, że nie potrafie jeszcze pisac w języku C, tzn. wiem jak program ma działac ale nie znam kodów :D A tak propo czy to co zrobiłam do tej pory ma coś wspólnego z programowaniem (tzn. czy o to chodziło) ? :P - Kama19 2013-03-13 23:18
wygląda dobrze, tylko nazywaj zmienne trochę bardziej zrozumiale ;p - Sopelek 2013-03-13 23:22

Pozostało 580 znaków

2013-03-14 00:41
0

Hej :))) Bardzo ładnie napisany kod!:)

Mogę Ci podpowiedzieć coś takiego:

    char text[30] = {0};
    char tmp1[30] = {0};
    char tmp2[30] = {0};
    FILE * otw;

    otw = fopen("dane.txt", "r");
    while(fgets(text, 30, otw))
    {
        if(text[0] >= 'A' && text[0] <= 'Z')
        {
            printf("Duza litera: %s", text);
        }
        else if(text[0] >= 'a' && text[0] <= 'z')
        {
            printf("Mala litera: %s", text);
        }
        else if(sscanf(text, "%15[0123456789],%15[0123456789]", tmp1, tmp2) == 2)
        {
            printf("Liczba rzeczywista: %s,%s\n", tmp1, tmp2);
        }
        else if(sscanf(text, "%29[0123456789]", tmp1) == 1)
        {
            printf("Liczba calkowita: %s\n", tmp1);
        }
        else
        {
            printf("Nie pasujaca linia!\n");
        }

    }
    fclose(otw);

Możesz użyć tej pętli na Linuxie powinno mniej więcej działać :P Żeby pisać do odpowiednich plików musisz zamienić printf na fprintf :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0