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 |
|
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: Praca z plikami: 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: int rozmiar = 0;
int const * t = new int[ rozmiar ];
for( unsigned int i = 0; i < rozmiar; i++ ) { t[ i ] =....}
delete[] p; Jak będziesz miał już jakieś konkretne pytania, to chętnie pomożemy :) |
|
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 :) |
|
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 :) |
|
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 :( |
|
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. |
|
« 1 » |