Esimene programm
Moderaator: Moderaatorid
Hoho, minu mäletamist mööda cin lõpetab lugemise peale tühja märki.
Antud juhul sinu koodis salvestatakse faili ainult eesnimi.....
Getline salvestab kuni parameetrina antud puhvrit on järgi.
Kasutaja võib siis sisestada oma ees, perekonna ja isanime.
Või mis ?
Antud juhul sinu koodis salvestatakse faili ainult eesnimi.....
Getline salvestab kuni parameetrina antud puhvrit on järgi.
Kasutaja võib siis sisestada oma ees, perekonna ja isanime.
Või mis ?
"Thinking is the hardest work there is, which is probably the reason why so few engage in it" - Henry Ford
Proovisin enda programmi, sisendeiks "kalle" ja "energia" ilma jutumärkideta. Väljundis kenasti nood kaks sõna, peale nime ja aadressi newlined.
Proovisin originaali samade parameetritega, tulemus täpselt sama.
Miskipärast tundub GCC nullib staatilised puhvrid ära. Samuti paneb getline ka \0'i tollesse puhvrisse. Tundub et ajasin get'i ja getline'i tööpõhimõtted sassi. Vabandust segaduse tekitamise pärast
Proovisin originaali samade parameetritega, tulemus täpselt sama.
Miskipärast tundub GCC nullib staatilised puhvrid ära. Samuti paneb getline ka \0'i tollesse puhvrisse. Tundub et ajasin get'i ja getline'i tööpõhimõtted sassi. Vabandust segaduse tekitamise pärast
Tegemist on c++ -iga..HoHo kirjutas:Proovisin enda programmi, sisendeiks "kalle" ja "energia" ilma jutumärkideta. Väljundis kenasti nood kaks sõna, peale nime ja aadressi newlined.
Proovisin originaali samade parameetritega, tulemus täpselt sama.
Miskipärast tundub GCC nullib staatilised puhvrid ära. Samuti paneb getline ka \0'i tollesse puhvrisse. Tundub et ajasin get'i ja getline'i tööpõhimõtted sassi. Vabandust segaduse tekitamise pärast
Sa ikka tead et GCC on Gnu Compiler Collection? g++ on sinna kuuluv c++ kompilaator. Ma pole harjunud üht väikest osa suurest tervikust eraldi välja toomisega kuna see nagunii otseselt asjasse ei puutu.
Erinevus eri keelte vahel on ainult frontendis mis tõlgib koodi mingisse vaheformaati mis antakse edasi "päris" kompilaatorile mis siis igasugu optimisatisoone ja muid trikke tegema hakkab.
Erinevus eri keelte vahel on ainult frontendis mis tõlgib koodi mingisse vaheformaati mis antakse edasi "päris" kompilaatorile mis siis igasugu optimisatisoone ja muid trikke tegema hakkab.
hoho- ma sain oma scripti küll tööle, kui tegin niimoodi:HoHo kirjutas:Sa ikka tead et GCC on Gnu Compiler Collection? g++ on sinna kuuluv c++ kompilaator. Ma pole harjunud üht väikest osa suurest tervikust eraldi välja toomisega kuna see nagunii otseselt asjasse ei puutu.
Erinevus eri keelte vahel on ainult frontendis mis tõlgib koodi mingisse vaheformaati mis antakse edasi "päris" kompilaatorile mis siis igasugu optimisatisoone ja muid trikke tegema hakkab.
c++ -o programm programm.cpp
pigem ikka g++uniz kirjutas:hoho- ma sain oma scripti küll tööle, kui tegin niimoodi:HoHo kirjutas:Sa ikka tead et GCC on Gnu Compiler Collection? g++ on sinna kuuluv c++ kompilaator. Ma pole harjunud üht väikest osa suurest tervikust eraldi välja toomisega kuna see nagunii otseselt asjasse ei puutu.
Erinevus eri keelte vahel on ainult frontendis mis tõlgib koodi mingisse vaheformaati mis antakse edasi "päris" kompilaatorile mis siis igasugu optimisatisoone ja muid trikke tegema hakkab.
c++ -o programm programm.cpp
Kui oli tõesti c++ siis on tegu ühe pagana imeliku distroga mis kipub programmide default nimetusi muutma
[edit]
sry, siiski tundub et eksisteerib c++ nimeline symlink. Samas ma pole veel kuulnud et keegi või miski seda kasutaks, täna oli esimene kord kui seda üldse nägin
natuke uurides selgus et g++ ja c++ nimelised asjad on hoopis koopiad ühest ja samast binaarist. Tegelikult oli neid binaare kokku terve hunnik:
Kood: Vali kõik
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 c++
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 cc
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 cpp
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 g++
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 g++32
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 gcc
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 gcc32
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 i686-pc-linux-gnu-c++
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 i686-pc-linux-gnu-cpp
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 i686-pc-linux-gnu-g++
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 i686-pc-linux-gnu-g++32
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 i686-pc-linux-gnu-gcc
-rwxr-xr-x 1 root root 9020 Nov 19 18:51 i686-pc-linux-gnu-gcc32
Huvi pärast küsin et mis olukord BSD all on? Kas seal on sama palju hardlinke? Miskipärast eeldan et on.commodore kirjutas:Koopiad :S
Anyway, edaspidi soovitan hakata kasutama g++ kuna see on vähemalt enam-vähem standartne, kui GCC'd saab standardiks pidada. Kõik senised kompileeritud programmid on kasutanud kas g++'i või siis mõnd i686-pc-linux-gnu-* asja, ei ükski pole kasutanud c++'i.
HoHo kirjutas:Huvi pärast küsin et mis olukord BSD all on? Kas seal on sama palju hardlinke? Miskipärast eeldan et on.commodore kirjutas:Koopiad :S
Anyway, edaspidi soovitan hakata kasutama g++ kuna see on vähemalt enam-vähem standartne, kui GCC'd saab standardiks pidada. Kõik senised kompileeritud programmid on kasutanud kas g++'i või siis mõnd i686-pc-linux-gnu-* asja, ei ükski pole kasutanud c++'i.
Kood: Vali kõik
# gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.4 [FreeBSD] 20050518
# c++ -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.4 [FreeBSD] 20050518
# cc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.4 [FreeBSD] 20050518Tegemist on ikka soft linkidega, nii öelda sümboolsete linkidega.
Seal on suur vahe, hard link on sama faili teine nimi ja linuxi kernel peab andmebaasi kui palju hard linke osutab ühte ja sama faili ja alles kui viimane hard link on kustutatud kustutab kernel ka faili.
Sümboolne link seevastu on eraldi fail mis osutab teist faili ja ta võib osutada ka faili millele pole enam hard linke ja mida me ei saa enam kasutada.
nagu näha on osutab c++ -> g++
vaadake seda numbrit selle faili alguses "116820" see on faili inode mis sisaldab infot faili kohta ja hard lingi puhul on need numbrid samad.
Seal on suur vahe, hard link on sama faili teine nimi ja linuxi kernel peab andmebaasi kui palju hard linke osutab ühte ja sama faili ja alles kui viimane hard link on kustutatud kustutab kernel ka faili.
Sümboolne link seevastu on eraldi fail mis osutab teist faili ja ta võib osutada ka faili millele pole enam hard linke ja mida me ei saa enam kasutada.
Kood: Vali kõik
rainer@1[~]$ ls -lia /etc/alternatives/c++
1136257 lrwxrwxrwx 1 root root 12 2006-05-11 06:56 /etc/alternatives/c++ -> /usr/bin/g++Kood: Vali kõik
rainer@1[~]$ ls -lia /usr/bin/g++
116820 lrwxrwxrwx 1 root root 7 2006-05-11 06:57 /usr/bin/g++"Thinking is the hardest work there is, which is probably the reason why so few engage in it" - Henry Ford
Kood: Vali kõik
//faili salvestus koos veateatega..
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
char buffer[81];
char faili_nimi[81];
cout << "Salvestava faili nimi: ";
cin.getline(faili_nimi, 81);
ofstream out_file(faili_nimi);
if (!out_file)
{
cerr << endl;
cerr << "Viga: Faili ei saa avada." << endl;
cerr << "Programm lopetatud" << endl;
exit(1);
}
cout << endl;
cout << "Sisesta oma nimi: ";
cin.getline(buffer, 81);
out_file << buffer << endl;
cout << "Sisesta oma perekonnanimi: ";
cin.getline(buffer, 81);
out_file << buffer << endl;
cout << "Sisesta oma aadress: ";
cin.getline(buffer, 81);
out_file << buffer << endl;
out_file.close();
cout << endl;
cout << "Programm ilusasti lopetatud." << endl;
return 0;
}
Tegin siit edasi nüüd, et ise saab panna failile nime ning sinna andmed panna ja salvestada( nt. sinufail.txt )- kusjuures avastasin, et niimoodi võib puhverdada terve pika rea üksteise alla..
Kood: Vali kõik
ofstream out_file(faili_nimi, ios::out | ios::app);Nüüd sa pead andmed failist välja ka lugema, võib olla programm peaks küsima kas tahad lugeda või kirjutada.
"Thinking is the hardest work there is, which is probably the reason why so few engage in it" - Henry Ford
C++ õppimise kohta nüüd ka HowtoForges õpetused olemas.
Tellige endale sünnipäevaks, sõbrapäevaks või muuks tähtpäevaks kingitus: Kingitused internetist - NetiKink.eu
Ma räägin ttü kirjastusest s.t eesti keeles- väärt raamat-) mingi forge pakub hello wordi, kuid Teodor pakub väärt õpet.
Üks näide kohe alguses:
Tegin kolm rida natuke ümber, et lisasin ka intressi sisestamise võimalusi, mis teodoril oli programmis kohe float intress=0.023
.. Minu versioon võimaldab panna kohe oma intressi:
float intress;
ja kaks uut rida:
printf("Milline on intress>");
scanf("%f",&intress);
Tulemus:
Lisaks on seal õpetusi ja näiteid tekstitöötlusest kuni kenoni välja..
Üks näide kohe alguses:
Tegin kolm rida natuke ümber, et lisasin ka intressi sisestamise võimalusi, mis teodoril oli programmis kohe float intress=0.023
.. Minu versioon võimaldab panna kohe oma intressi:
float intress;
ja kaks uut rida:
printf("Milline on intress>");
scanf("%f",&intress);
Tulemus:
Kood: Vali kõik
#include <stdio.h>
#include <conio.h>
int main(void)
{
int kuud, i;
double summa;
float intress;
printf("Mitu kuud hoiustad>");
scanf("%d",&kuud);
printf("Milline on intress>");
scanf("%f",&intress);
printf("Millise summa hoiustad>");
scanf("%lf",&summa);
for(i=1;i<=kuud;i++)
{
summa+=(summa*intress/12);
printf("%2d %10.2lf\n",i,summa);
if(!(i%12))printf("Aasta \n");
}
printf("Vajuta suvalisele klahvile...");
getch();
return 0;
}
Mina ei arva forgest midagi. Kõigepealt soovitan Teodori läbi lugeda ja lõpuks avastate, et ennem tuleks see c selgeks teha, mida Teodor Luczkowski kirjutab ning alles siis avastate, et c++ iseenesest on jube kerge..Hardi kirjutas:Forge oma on c++, aga see puhas c. Neid c keele raamatuid on eestikeeles mitu. Mul on just c++ oma vaja.
Põhifunktsioonid on täiesti selgelt piiritletud. Ja õpiku lõpu poole õpetab ka natuke c++
Ning seejärel soovitan, mis ületab teie forge jama tunduvalt:
http://www.mindviewinc.com/



