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

Problem z zadaniem :(

Ostatnio zmodyfikowano 2012-06-12 20:29
Autor Wiadomość
Boobek
Temat założony przez niniejszego użytkownika
Problem z zadaniem :(
» 2012-06-11 23:26:03
Witam,
mam problem z zadaniem jakie dał mi wykładowca jako zadanie na doszkolenie umiejetnosci. Jako, że ostatnio C++ stał sie moim zainteresowaniem chciałbym to zrobić lecz nie wiem jak zrobić ten program.

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.

Dziękuje i pozdrawiam
Boobek
P-58282
Sparrow-hawk
» 2012-06-12 02:21:13
Wnioskuję, że kolega w ogóle nie zna C,C++. Zadanie, które podałeś, to około 15 linijek kodu. Nie ma tu właściwie w tym programie nic, co trzeba by samemu stworzyć. Wystarczy jedynie poskładać program z "klocków". Proponuje zapoznać się z następującymi materiałami:

Pętla for:
Kurs C++: 22. Pętla for

Praca z plikami:
Kurs C++: Obsługa plików

Teraz uświadomiłem sobie jeszcze jeden problem, które wymaga nieco więcej wiedzy, mianowicie podejrzewam, że nie wiadomo ile liczb będzie w otwieranym pliku. Może być 5, a może być 10, a może być 100. Wybacz, ale późno już, więc teraz się nie doszukam tego, ale problem możesz rozwiązać na 3 sposoby. Pierwszy jest nieelegancki, czyli możesz założyć, że liczb w pliku nie będzie więcej niż np. 1000, i o takim rozmiarze deklarujesz tablicę, do której będziesz wczytywał poszczególne liczby, drugim sposobem jest skorzystanie z szablonu/klasy vector (Plik vector.h), trzecia możliwość to skorzystanie z operatorów new i delete, oraz wskaźników i stworzenie tablicy dynamicznej:
C/C++
int rozmiar = 0;
/*Po otworzeniu pliku, pierwszą liczbę należy wpisać do zmiennej rozmiar i następnie: */
int const * t = new int[ rozmiar ];
/*Teraz wpisujesz sobie dane do tablicy wykorzystując pętle for*/
for( unsigned int i = 0; i < rozmiar; i++ ) { t[ i ] =....}
/*I jak już posortujesz i zapiszesz do drugiego pliku usuwasz tablicę dynamiczną*/
delete[] p;

Jak będziesz miał już jakieś konkretne pytania, to chętnie pomożemy :)
P-58284
Boobek
Temat założony przez niniejszego użytkownika
» 2012-06-12 12:34:34
Jakieś pojęcie o C++ posiadam ale nie wiem jak miałby wyglącać ten kod. Wszystko mi sie myli a chciałbym zrobić to zadanie. Napisałeś "poskładać ten program z klocków" tylko problem w tym ze tak średnio to działa. Chciałbym prosić o pomoc w napisaniu tego programu. "Sparrow-hawk" dziękuje za odpowiedz :)
P-58291
Sparrow-hawk
» 2012-06-12 17:43:23
No dobrze, napisałem ten program. Muszę przyznać, że jednak do najłatwiejszych nie należy. Program u mnie zajmuje 83 linijki, choć pewnie można go jeszcze z optymalizować. I teraz mam dylemat, bo wklejenie całego kodu nie przyniesie Ci żadnych dydaktycznych korzyści. Napisałeś, że masz problem i oczekujesz pomocy, ale konkretnie jakiej? Jeśli problem == napisanie całego programu, to nikt tu nie będzie chętny do jego napisania za ciebie. Jeśli masz problem np ze zrozumieniem, jak odczytać dane z pliku, użyć pętli for, itd. to odpowiedzi dostaniesz.

Mogę ze swojej strony powiedzieć, jakie problemy są do rozwiązania:
1. Nie wiadomo ile liczb będzie w pliku;
2. Liczby mają różną długość, oraz mają znak. Po pierwsze może być 9 liczb w pliku, a może być ich 123. Każda z nich może być cyfrą od -9 do 9, a może być liczbą od -999999 do 999999....
3. Plik możemy odczytywać na kilka sposobów, jednakże przeważnie albo dostaniemy char, albo dostaniemy string, a więc aby otrzymać liczby trzeba będzie się trochę napracować.
4. Sortowanie: Ja osobiście skorzystałem z gotowego algorytmu, ale zawsze można napisać go samemu.

No i to chyba tyle :)
P-58311
Boobek
Temat założony przez niniejszego użytkownika
» 2012-06-12 20:23:43
#include <iostream>
#include <fstream>
 
using namespace std;
 int main(int argc, char* argv[])
{

    std::fstream plik;
    plik.open("denewel.txt", std::ios::in);   

    int a, b, tmp;
     int *tablica = new int/;

    for(int i = 0; i < a; ++i)
    {
        plik >> b;
        tablica = b;        }
   
    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;             }
           
   plik.close();
   std::fstream plik2;
    plik2.open("wyniki1.txt", std::ios::out);
for(int i = 0; i < a; ++i)
    plik2 << tablica << " ";
plik2.close();

return 0;
}

Tylko mi nie zczytuje tych danych i nie iwem dlaczego jak odpalam program to czarny ekran :(
P-58328
Sparrow-hawk
» 2012-06-12 20:29:38
Nie no to już nawet przepisać gotowca z innego forum nie potrafisz? Po za tym za każdym razem podajesz inną historię potrzeby stworzenia programu.
P-58329
« 1 »
  Strona 1 z 1