teo
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
τελος σπαντον
αυτο που θες να πεις ειναι οτι πτωτα στην μεταβλητη i θα αποθηκευτη ο αριθμος 1 μετα ο 2 κοκ.
κατι αλλο τωρα η εξοδος στην οθονη οσων αφορα για την μεταβλητη sum ειναι 21 (1+2+3+4+5+6=21) . γιατι παιρνει τα 6 πρωτα?
στην πρωτη εκτελεση της do while η μεταβλητη j γινεται 1 και μετα 0 κοκ? εχω μπερδευτη λιγακι εως πολυ αν και ειναι απλο παραδειγμα
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
#include<fstream.h>
#include<iostream.h>
using namespace std;
int main(void)
{
ofstream out_file;
ifstream in_file;
int i,j,sum;
bool done;
out_file.open("test.dat");
for(i=1;i<4;i++){
for(j=1;j<=4;j++)
out_file<<4*(i-1)+j<<' ';
cout<<endl;
}
out_file.close();
in_file.open("test.dat");
done=false;
j=0;
sum=0;
do{
in_file>>i;
if(in_file.eof())done=true;
else j++;
if(j%3==0 && j>0){
sum+=i;
j=-1;
}
}while (!done);
in_file.close();
cout<<sum<<endl;
system("PAUSE");
}
αυτο που θελω να μου εξηγησει καποιος προς το παρον ειναι τι δουλεια κανει το in_file>>i;
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
#include<iostream>
#define BUFSIZE 100
using namespace std;
int main(int argc,char *argv[])
{
char buf[BUFSIZE];
int n;
if(argc!=3){
cout<<"Usage:CopyFile <from> <to>"<<endl;
return 0;
}
ifstream fin(argv[1]);
if(fin==0){
cout<<"Error: Input file cannot be opened for reading!"<<endl;
return 10;
}
ofstream fout(argv[2]);
if(fout==0){
cout<<"Error: Output file cannot be opened for writing!"<<endl;
return 10;
}
fin.seekg(0,ios::end);
size_t finsize=fin.tellg();
cout<<"Input file size: "<<finsize<<endl;
fin.seekg(0,ios::beg); // ios::beg -> from the start of the file
int c;
int percent=0;
while ((n = ifstream::read(0, buf, BUFSIZE)) > 0){ /* áíÜãíùóç áðü ôï áñ÷åßï óïõ, üðïõ BUFSIZE ôï ìÝãåèïò ðïõ èåò */
ifstream::write(1,buf,n); /*åããñáöÞ óôï stream åîüäïõ*/
cout<<"Copy completed : "<<100*percent/finsize<<"\r";
percent++;
}
fin.close();
fout.close();
}
Εχω δηλωση το BUFSIZE σαν σταθερα δηλ. #define BUFSIZE 100
Οταν ομως κανω Compile(Dev-C++) μου βγάζει τα εξεις μυνηματα λαθους:
35 D:\Temp\TEI OF ATHENS_CS\Ä å÷\C++\PROGRAMS FOR C++ (ERGASTIRIO)\pr52\Untitled1.cpp no matching function for call to `std::basic_istream<char, std::char_traits<char> >::read(int, char[100], int)'
36 D:\Temp\TEI OF ATHENS_CS\Ä å÷\C++\PROGRAMS FOR C++ (ERGASTIRIO)\pr52\Untitled1.cpp `write' is not a member of `std::ifstream'
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
#include<fstream>
#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{
char buf[BUFSIZE];
int n;
if(argc!=3){
cout<<"Usage:CopyFile <from> <to>"<<endl;
return 0;
}
ifstream fin(argv[1]);
if(fin==0){
cout<<"Error: Input file cannot be opened for reading!"<<endl;
return 10;
}
ofstream fout(argv[2]);
if(fout==0){
cout<<"Error: Output file cannot be opened for writing!"<<endl;
return 10;
}
fin.seekg(0,ios::end);
size_t finsize=fin.tellg();
cout<<"Input file size: "<<finsize<<endl;
fin.seekg(0,ios::beg); // ios::beg -> from the start of the file
int c;
int percent=0;
while ((n = ifstream::read(0, buf, BUFSIZE)) > 0){ /* ανάγνωση από το αρχείο σου, όπου BUFSIZE το μέγεθος που θες */
ifstream::write( 1, buf, n); /*εγγραφή στο stream εξόδου*/
exit(0);
cout<<"Copy completed : "<<100*percent/finsize<<"\r";
percent++;
}
fin.close();
fout.close();
}
δηλαδη καπως ετσι θα ειναι ο κωδικας;
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{
if(argc!=3){
cout<<"Usage:CopyFile <from> <to>"<<endl;
return 0;
}
ifstream fin(argv[1]);
if(fin==0){
cout<<"Error: Input file cannot be opened for reading!"<<endl;
return 10;
}
ofstream fout(argv[2]);
if(fout==0){
cout<<"Error: Output file cannot be opened for writing!"<<endl;
return 10;
}
fin.seekg(0,ios::end);
size_t finsize=fin.tellg();
cout<<"Input file size: "<<finsize<<endl;
fin.seekg(0,ios::beg); // ios::beg -> from the start of the file
int c;
int percent=0;
while(fin.eof()==false)
{
c=fin.get();
if(fin.eof()==false)
fout.put(c);
cout<<"Copy completed : "<<100*percent/finsize<<"\r";
percent++;
}
fin.close();
fout.close();
}
Δοκιμάστε να αλλάξετε τον παραπάνω κώδικα, ώστε η συνάρτηση get() να μην διαβάζει ένα
χαρακτήρα την φορά αλλά ένα μπλόκ χαρακτήρων (π.χ. 512 bytes/χαρακτήρες). Χρησιμοποιήστε την
συνάρτηση ifstream::read(buf, bufsize) όπου buf είναι ένας πίνακας τύπου char, και το bufsize το
πλήθος των χαρακτήρων που θα διαβαστούν με την μια.
αυτο το ερωτημα πως θα το κανω;
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
Χρησιμοποιησα τα εξεις δυο προγραμματα για να κανω την ασκηση:
program1.cpp
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream ofs("data.txt");
for(int i =1;i <= 10;i++) {
ofs << "This is line " << i << endl;
}
return 0;
}
program2.cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream ifs("data.txt");
string line;
while(getline(ifs,line)) {
cout << "[ " << line << " ]" << endl;
}
return 0;
}
[SIZE=-1]Και παλι σε ευχαριστω πολυ![/SIZE]
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
(διαχωρισμένες μεταξύ τους με ʽ\nʼ). Στην συνέχεια, το ίδιο πρόγραμμα, θα διαβάζει από αυτό το
αρχείο, γραμμή-γραμμή, και θα τις εκτυπώνει στην οθόνη.
Βοήθεια:
Χρησιμοποιήστε τις ακόλουθες συναρτήσεις της κλάσης ifstream:
· void getline(buffer, MAX), όπου:
o buffer: μεταβλητή τύπου char[] ή char*, μέσα στην οποία θα αποθηκευτεί η κάθε
γραμμή όταν διαβαστεί.
o MAX: μια σταθερά που προσδιορίζει τον μέγιστο αριθμό χαρακτήρων που θα πρέπει
να διαβαστούν μέχρι να συναντήσει end of line.
· int eof(), η οποία μας επιστρέφει 0 αν ο αρχείο έχει τελειώσει
Μπορει καποιος να με βοηθησει σ'αυτην την ασκηση,για να μπορεσω να την κανω;
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.