Sortowanie liczb pobranych z pliku

0

dzien dobry czy mogłbym mi ktoś pomoć mianowaicie mam takie zadanie:

napisz program w c++ ktory pobiera liczby z pliku sortuje je i przenosi do drugiego

bylbym bardzo wdzieczny

2

Chętnie pomożemy. Z czym masz problem? Pokaż co już masz

1
kq napisał(a):

Chętnie pomożemy. Z czym masz problem? Pokaż co już masz

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    // Otwórz plik wejściowy
    ifstream wejscie("wejscie.txt");
    if (!wejscie.is_open())
    {
        cout << "Nie udało się otworzyć pliku wejściowego." << endl;
        return 1;
    }

    // Wczytaj liczby z pliku wejściowego i zapisz do wektora
    vector<int> liczby;
    int liczba;
    while (wejscie >> liczba)
    {
        liczby.push_back(liczba);
    }

    // Posortuj liczby w wektorze
    sort(liczby.begin(), liczby.end());

    // Otwórz plik wyjściowy
    ofstream wyjscie("wyjscie.txt");
    if (!wyjscie.is_open())
    {
        cout << "Nie udało się otworzyć pliku wyjściowego." << endl;
        return 1;
    }

    // Zapisz posortowane liczby do pliku wyjściowego
    for (int liczba : liczby)
    {
        wyjscie << liczba << endl;
    }

    // Zakończ program
    cout << "Posortowane liczby zostały zapisane do pliku wyjscie.txt." << endl;
    return 0;
}

mam coś takiego ale srednio działa bo wyskakuje mi ciągle Nie udało się otworzyć pliku wyjściowego.

0

Pewnie musisz te pliki pootwierać zanim sprawdzasz czy są otwarte.

0
opiszon napisał(a):

Pewnie musisz te pliki pootwierać zanim sprawdzasz czy są otwarte.

nic to nie dało

0
  1. sprawdź z tego postu pierwszą odpowiedź, tzn. wylistowano dlaczego się może nie otwierać. Masz prawa do zapisu w tym folderze? https://stackoverflow.com/questions/5835848/when-will-ofstreamopen-fail
  2. można zamaist std::sort np. użyć std:::multiset który od razu sortuje takie inty
    Edit
  3. Tam ofstream ma fails()
0

Pytanie: jak uruchamiasz ten program? Jak w IDE to bieżący katalog może być inny niż ten zawierający plik wejscie.txt. Poza tym sprawdziłem u mnie i Twój program działa, odczytuje i zapisuje posortowane wartości.

0

Popraw tak:

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    // Otwórz plik wejściowy
    ifstream wejscie("wejscie.txt");
    if (!wejscie.is_open())
    {
        perror("Nie udało się otworzyć pliku wejściowego.");
        return 1;
    }

    // Wczytaj liczby z pliku wejściowego i zapisz do wektora
    vector<int> liczby;
    int liczba;
    while (wejscie >> liczba)
    {
        liczby.push_back(liczba);
    }

    // Posortuj liczby w wektorze
    sort(liczby.begin(), liczby.end());

    // Otwórz plik wyjściowy
    ofstream wyjscie("wyjscie.txt");
    if (!wyjscie.is_open())
    {
        perror("Nie udało się otworzyć pliku wyjściowego.");
        return 1;
    }

    // Zapisz posortowane liczby do pliku wyjściowego
    for (int liczba : liczby)
    {
        wyjscie << liczba << endl;
    }

    // Zakończ program
    cout << "Posortowane liczby zostały zapisane do pliku wyjscie.txt." << endl;
    return 0;
}

Będzie przynajmniej wiadomo jaki jest problem z otwarciem pliku:

  • nie można odnaleźć pliku - program jest zbudowany i uruchomimy w innym miejscu, niż plik wejściowy
  • brak dostępu - antywirus blokuje dostęp do plpliku
  • ....
2

Napiszcie w ChatGPT Napisz program w c++ ktory pobiera liczby z pliku sortuje je i przenosi do drugiego i porównajcie wynik z tym programem, który był nam podany na początku :)

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