Pomoc z zadaniem :/

0

Witam,
dostałem zadanie na C++:

W pliku o nazwie "denewel.txt" są liczby. Pierwsza liczba określa ile jest liczb w pliku. W przykładowym pliku o zawartości: "5 6 8 1 -3": 5 oznacza, że w pliku jest 5 liczb, pozostałe liczby (tu 6 8 1 -3) są danymi do przetworzenia w programie. Napisz program, który utworzy plik o nazwie "wyniki1.txt", w którym będzie przechowywana informacja:
-liczby z pliku "denewel.txt" (bez informacji ile liczb jest w tym pliku; tu bez 5) przesortowane od najmniejszej do największej,
-W programie wykorzystaj własną funkcję oraz pętlę (tylko tego typu):
-for.

Niestety nie potrafie go zrobić. Czy ktoś mógłby mi to napisać?

Dziękuje za pomoc
Pozdrawiam Boobek

4

Nie umiem ugotować zupy pomidorowej. Czy mógłby mi ktoś ugotować?

1
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char* argv[])
{
    //utworzenie zmiennej plikowej
    std::fstream plik;
    plik.open("denewel.txt", std::ios::in);
    
    //deklaracja potrzebnych zmiennych
    int a, b, tmp;
    
    //wczytanie pierwszej liczby z pliku
    plik >> a;
    
    //utworzenie tablicy dynamicznej
    int *tablica = new int[a];
    
    //wczytanie danych z pliku do tablicy
    for(int i = 0; i < a; ++i)
    {
        plik >> b;
        tablica[i] = b;    
    }
    
    //sortowanie tablicy
    for (int i = 0; i < a; ++i)
        for (int j = 0; j < a; ++j)
            if (tablica[j] > tablica[j+1])
            { 
                tmp = tablica[j]; 
                tablica[j] = tablica[j+1];
                tablica[j+1] = tmp; 
            }
            
    //zamknięcie pliku
    plik.close();
    
    //utworzenie drugiej zmiennej plikowej
    std::fstream plik2;
    plik2.open("wyniki1.txt", std::ios::out);
    
    //zapis posortowanej tablicy do pliku
    for(int i = 0; i < a; ++i)
    plik2 << tablica[i] << " ";
    
    //zamknięcie pliku drugiego
    plik2.close();
    
    return 0;
}
0

Zauważ, że cały czas operujesz na 5 liczbach a a po sprawdzeniu pierwszej powinieneś na 4, o innych rzeczach nie wspominam.

0

I pewnie nie podziękuje, bo nawet przepisać nie umie ;) Tutaj -> http://cpp0x.pl/forum/temat/?id=7452 sam chciałem mu pomóc.

Od siebie dodam tylko, że w powyższym programie nie ma potrzeby inicjalizować zmiennej plik2, skoro na pliku wejściowym zakończyliśmy już działania, i dodałbym jeszcze zniszczenie obiektu na końcu:

delete[] tablica; 
0

Kod po poprawkach sugerowanych przez użytkowników tego forum:

#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char* argv[])
{
    //utworzenie zmiennej plikowej
    std::fstream plik;
    plik.open("denewel.txt", std::ios::in);
    
    //deklaracja potrzebnych zmiennych
    int a, b, tmp;
    
    //wczytanie pierwszej liczby z pliku
    plik >> a;
    
    //utworzenie tablicy dynamicznej
    int *tablica = new int[a-1];
    
    //wczytanie danych z pliku do tablicy
    for(int i = 0; i < a-1; ++i)
    {
        plik >> b;
        tablica[i] = b;    
    }
    
    //sortowanie tablicy
    for (int i = 0; i < a-1; ++i)
        for (int j = 0; j < a-1; ++j)
            if (tablica[j] > tablica[j+1])
            { 
                tmp = tablica[j]; 
                tablica[j] = tablica[j+1];
                tablica[j+1] = tmp; 
            }
            
    //zamknięcie pliku
    plik.close();
    
    //utworzenie drugiej zmiennej plikowej
    std::fstream plik2;
    plik2.open("wyniki1.txt", std::ios::out);
    
    //zapis posortowanej tablicy do pliku
    for(int i = 0; i < a-1; ++i)
    plik2 << tablica[i] << " ";
    
    //zamknięcie pliku drugiego
    plik2.close();
    
    //usunięcie tablicy
    delete[] tablica;
    
    return 0;
}

Zawartość pliku denewel.txt
5 6 8 1 -3
Zawartość pliku wynikowego (wyniki1.txt)
-3 1 6 8

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