» »

[C++] vprašanja

[C++] vprašanja

««
«
1 / 9
»»

Redman ::

A mi lahko kdo pove kaj je razlika med COUT in VOID?
  • spremenilo: CCfly ()

Senitel ::

LOL... :D >:D
void je "tip" podatkov, cout je pa objekt za izpisovanje na konzolo...

Redman ::

hvala za odgovor pa še eno vprašanje kva je razlika med int in float?

CaqKa ::

int je naravna cifra... torej 1,2,3....
float je pa to da še ima vejico zraven.

Redman ::

Zdej mam pa en problem.Ko vnašam v moj program znesek plače in ko npr. vpišem neko besedo se mi program sesuje, kako nej nardim da program javi da je treba vnesti številko.

OwcA ::

Kaj, ko bi si ti prebral kakšen tutorial o programiranju, kajti, milo rečeno, niti osnov nimaš razčiščenih.
Otroška radovednost - gonilo napredka.

T(he) Boss ::

Lahko uporabis funkcijo isdigit in s tem preveris, ce je stevilka al ne.

Exilian ::

verjetn nisi incializiru chara :)
It's not the opensource i hate.
It's the fanclub I cannot stand.

antonija ::

Jst znam pogledat ce je stevilka al pa crka!!! Pa sm sele tri dni v "programerskih vodah". (to pomeni da se tri dni ucim C++ iz tutoriala...:D ) Sam en if al pa for postavis vmes ki preverja kaj si vtipkal pa je!

Zdej sm prou ponosn nase...:8)

Sej vem da se vecini zdi tak pristop neumen, sam to je vse kar sm se do zdej naucu. Sej pocas bom tud ksno bl resno varianto spoznau...
Statistically 3 out of 4 involved usually enjoy gang-bang experience.

bindec ::

Cim vec pristopov poznas, tem bolje. Ko enkrat obvladas pa je pomembno tudi, da je casovna zahtevnost(beri st. operacij) cim manjsa in s tem tudi procesorska obremenitev. Tudi js sem se ucil iz napak.

Bojevnik ::

Vclan se v CTK, tm boš vse o programiranju najdu

fx ::

Imam težavo, tukaj je program;

int main()
{
char znak[10];

do 
{
cin >> znak;
}
while(znak != "exit");

return 0;
}


ko vpisem exit mi program ne gre ven iz zanke, kaj je narobe. vse sem ze preizkusil pa mi ne gre. Prevajalnik mi ne javi napake.

Lp

Mpajzl

Zgodovina sprememb…

  • spremenil: Primoz ()

OwcA ::

... ali pa uporabiš std::string in jih primerjaš kot žlikrofe. ;)
Otroška radovednost - gonilo napredka.

fx ::

ta problem se da enostavo rešiti tako

int main()
{
char znak;

do 
{
cin >> znak;
}
while  (znak !='e');
return 0;
}


Samo jaz sem vceraj pozabil napisati, da moram znak poslati na lpt vrata;
torej to bi tako izgledalo;
void LPT(char ukaz[10])
{
 FILE *lpt;
 lpt = fopen("/dev/lp0", "w+");
 fputs(ukaz,lpt);
 fclose(lpt);
}

int main()
{
char ukaz[10];

do
{
cout " Vnesi ukaz: ";
cin.get(ukaz,9);
LPT(ukaz); 
}
while (ukaz != "exit");
return 0;
}


tako izgleda moj program, samo z cin.get mi program leti v zanki in izpisuje Vnesi ukaz. Se pa ne ustavi. Dokler ne pritisnem Ctrl + C. Zdaj pa nevem več kaj bi bilo narobe.

Lp

Mpajzl

Zgodovina sprememb…

  • spremenil: Primoz ()

Vesoljc ::

amm... po nesreci sem izbrisal svoj post :(

while (ukaz != "exit");


polja znakov ne mores tako primerjati, uporabi funkcijo strcmp!
Abnormal behavior of abnormal brain makes me normal...

kihc ::

Bojevnik: CTK ? Kaj to? Google ne najde nič pametnega (:
x

Vesoljc ::

poizkusi ctk.si
Abnormal behavior of abnormal brain makes me normal...

fx ::

To so napake ki mi jih javi prevajalnik

/windows/c/c/robot_test.cpp: In function `int main()':
/windows/c/c/robot_test.cpp:73: error: `string' undeclared (first use this
function)
/windows/c/c/robot_test.cpp:73: error: (Each undeclared identifier is reported
only once for each function it appears in.)
/windows/c/c/robot_test.cpp:73: error: parse error before `;' token
/windows/c/c/robot_test.cpp:97: error: `str' undeclared (first use this
function)

to pa je program (ni celoten caa 150 vrstic ga je)

void LPT(char ukaz[])                     //54
{                                         //55
    FILE *lpt;                            //56
    lpt = fopen("/dev/lp0" , "w+");       //57
    fputs(ukaz, lpt);                     //58
    fclose(lpt);                          //59
 }   

int main()
{
string str;                         //73
char izbira , yes_or_no;
int naslov;
char chr_ukaz[10];


IzpisiMeni();

do
{

  izbira = VrniIzbiro();

  switch (izbira)
  {
    case '1': // '1'
     {
       Vprasanje();
       cin >> yes_or_no;
         if (yes_or_no == 'y')
           {
             do
               {
	          cout << "LPT1 Vnesite ukaz: ";
                  getline (cin, str);                     //97
                  chr_ukaz = str;
		  LPT(chr_ukaz);
               }
             while (str != "exit");
	   }
     break;
     }

    case '2': // '2'
     {

     break;
     }

    case '3':  // '3'
     {

     break;
     }
  }
}
while (izbira != 'e' );

return 0;
}


Program se še vedno nanaša na prešnje probleme, nekatere izmed njih sem jih rešil. Teh dveh napak pa nevem rešiti.

"Naj živi linux"

jype ::

mpajzl: #include <string> ti manjka.

fx ::

saj imam samo prej jih sem pozabil kopirati
#include <iostream.h>
#include <stdio.h>
#include <string.h>

"Naj živi linux"

Vesoljc ::

probaj tko

#include <string>

int main()
{
    std::string str;
}
Abnormal behavior of abnormal brain makes me normal...

fx ::

Vecoljc ono dela, samo je problem ker se mi program noče vrniti nazaj v glavni program. Zopet koda, ki jo imam trenutno.


char VrniIzbiro()
{
  char izbira;
  cout << "> ";
  cin >> izbira;

  return izbira;
}

void LPT(std::string ukaz)
{
/*deklaracija velikosti polja in samo polje*/
const char vel_polja = 5;
char polje[vel_polja];
char *znak;
/*pisanje v polje po znakih*/
for (int i = 0; i < vel_polja; i++)
    polje[i] = ukaz[i];
/*branje iz polja po znakih in posiljanje vskga znaka posebaj*/
for (int i = 0; i < vel_polja; i++)
 {
   *znak = polje[i];
   FILE *lpt;
   lpt = fopen("/dev/lp0" , "w+");
   fputs(znak, lpt);
   fclose(lpt);
 }
 }


int main()
{

std::string ukaz;

char yes_or_no, izbira;
int naslov;

IzpisiMeni();

do
{
  izbira = VrniIzbiro();

  switch (izbira)
  {
    case '1': // '1'
     {
       Vprasanje();
       cin >> yes_or_no;
         if (yes_or_no == 'y')
           {
           cout << "LPT1 vnesite ukaze: ";
	     do
               {
	          cout << ">> ";
		  getline (cin, ukaz);
		  LPT(ukaz);
               }
             while ((ukaz != "exit") and (ukaz !="e"));
	   }
     break;
     }

    case '2': // '2'
     {

     break;
     }

    case '3':  // '3'
     {

     break;
     }
  }
}
while (izbira != 'e');

return 0;
}


Zdaj ni problem, v prevajnju, ampak program se mi noče vrniti nazaj iz LPT funkcije. Mogočje je to krivo ker je v funkciji.

"Naj živi linux"

Vesoljc ::

za zacetek preveri kaj ti vrneta fopen ter fputs, drugace pa ne pozabit da string lahko uporabljas tudi kot char (string dolzine ena), ko pa rabis const char* dostop pa uporabi funkcijo std::string.c_str().
Abnormal behavior of abnormal brain makes me normal...

fx ::

Kaj je narobe v tem stavku

ifstream osebe(ime_datoteke, ios::in |ios::nocreate);

ker mi prevajalnik javi:

error: `nocreate' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'


imam vkljuceno datoteko fstream.h

"Naj živi linux"

Zgodovina sprememb…

  • spremenil: fx ()

Vesoljc ::

celo minuto sem iskal...
klik

se vedno mesas c in c++ headerje! uporabljal c++ headerje (brez koncnice .h), ki so oviti v imenski prostor std.

// torej 
#include <fstream.h>
// je isto kot
#include <fstream>
using namespace std;
Abnormal behavior of abnormal brain makes me normal...

fx ::

Jaz delam po knjigi kjer na veliko piše navajam "PROGRAMIRANJE V JEZIKU C++" in vsi problemi izhajajo iz te knjige. Avtorja pa sta Viljem Žumer in Nikolaj Korbar.

"Naj živi linux"

Jebiveter ::

Veliko primerov v knjigah ne deluje v real-life situacijah. Zato se moras nauciti prepoznati napake, predvsem tiste, ki si pogojene z sistemom (linux, win,...). Sicer pa, samo z prepisovanjem iz knjige se ne bos naucil programiranja. Naucit se moras, kako nekaj deluje in to uporabiti (najbolje prakticno - jaz sem se PHP in nekaj malega C++ naucil tako, da sem delal po knjigi in hkrati pisal svojo aplikacijo. Na zacetku... potem, ko prides mimo tega pa ti najvec pomagajo razni opisi funkcij, reference, itd. ).
Certainty of death. Small chance of success. What are we waiting for?

fx ::

Jebiveter jaz tako delam, kot si napisal. Ker prepisovanje programov mi je dolgocasno. Samo grem program prepisem ko v mojem ne morem najti napake, kaj je narobe.

Vesoljc to z
#include <fstream> using namespace std; 
mi prevajalnik javlja se vedno isto napako.

"Naj živi linux"

OwcA ::

google dela čudeže (tole je seve prvi zadetek):

The ios::nocreate setting did not make it into the ISO 14882:1998 C++
standard. Too platform specific.

You can simulate that behavior with:
fstream foo("foo.txt", ios_base::in);
if(!fs) {
  // File does not exist.
  // Do not create one.
  }
else {
  foo.close();
  foo.open("foo.txt", ios_base::out);
}


Note: the ios::xxxxx settings are from the defunct <:fstream.h> header file.
While the ios_base::xxxxx are from the <:fstream> (notice, no .h suffix)
header file, within the std namespace.
Otroška radovednost - gonilo napredka.

CaqKa ::

Avtorja pa sta Viljem Žumer in Nikolaj Korbar.

sej ni čudno da ne dela...
mislim žumer.. daj rajši si kako drugo knjigo poišči
resno!

whatever ::

Caqka: Kaj je pa narobe z Žumrom? Sicer je res, da na predavanjih deluje mal odsotno na momente:D , sam knjige njegove so pa kar dobre po mojem skromnem mnenju.

fx ::

Katero knjigo pa mi pol priporocate ?

Evo to je moj program v katerem je napaka

bool IzberiDatoteko(char* ime_datoteke)
{
  cout << "Vnesite ime datoteke: ";
  cin.get(); // preberemo znak za novo vrstico
  cin.getline(ime_datoteke, 30, '\n');

 ifstream doc(ime_datoteke, ios_base::in |  ios_base::nocreate);
  if (doc.good())
      return true;

  cout << "Datoteka ne obstaja!" << endl;
  cout << "Ali jo ustvarim [y/n]?: ";
  char yes_no;
  cin >> yes_no;

  if (yes_no == 'Y' || yes_no == 'y')
  {
     ifstream doc(ime_datoteke, ios_base::in);
     if (doc.bad() || doc.fail())
     {
        cout << "Napaka pri odpiranju datoteke!" << endl;
	return false;
     }
     return true;
  }
  return false;
}


Sem napake popravil, kot mi je zgoraj našel Owca, samo mi program še vedno javi error: `nocreate' is not a member of type ` std::ios_base', če pa ga izbrišem vem pa mi napiše da je napaka pri branju datoteke, seveda to že javi mojo napako.

"Naj živi Linux"

OwcA ::

Kako si ti prebral (razumel) moj odgovor ne vem, ampak tam ti lepo piše, da se nocreate ne uporablja več, hkrati pa je predstavljen tudi nadomestek zanj.
Otroška radovednost - gonilo napredka.

fx ::

Kaj pa knjiga C++ na kolenih je boljša. Avtor je Goran Bervar.

Ono sem si prevedo OwcA pa sem naredil tako kot je spodaj program, pa mi prevajalnik ven vrže kar nekaj napak

Program:

#include <iostream.h>
#include <stdio.h>
#include <string>
#include <fstream>

using namespace std; /* to mora biti zunaj ali noter v funkciji*/

/*
Funkcija preveri ce obstaja datoteka, če ne izpise Ali jo ustvarim
- ce pritiasnemo na y potemo jo naredi drugece pa ne.
- ce pa datoteka obstaja pa spremenljika je_datoteka dobi vrednost true
*/

bool IzberiDatoteko(char* ime_datoteke)
{
  cout << "Vnesite ime datoteke: ";
  cin.get();
  cin.getline(ime_datoteke, 30, '\n');

  fstream doc(ime_datoteke, ios_base::in); //65

  if (doc.good())   //67
      return true;

  Napaka('3');
  Vprasanje('2');
  char yes_no;
  cin >> yes_no;

  if (yes_no == 'y')
  {
     fstream doc(ime_datoteke, ios_base::in); //77
     if (doc.bad() || doc.fail())
     {
        Napaka('2');
	return false;
     }
     return true;
  }
  return false;
}


napake

/windows/C/c/robot_test.cpp: In function `bool IzberiDatoteko(char*)':
/windows/C/c/robot_test.cpp:65: error: `fstream' undeclared (first use this
function)
/windows/C/c/robot_test.cpp:65: error: (Each undeclared identifier is reported
only once for each function it appears in.)
/windows/C/c/robot_test.cpp:65: error: parse error before `(' token
/windows/C/c/robot_test.cpp:67: error: `doc' undeclared (first use this
function)
/windows/C/c/robot_test.cpp:77: error: parse error before `(' token

Zdaj vec nevem kaj naj naredim, da mi prevajalnik pravi da fstream ni deklriram [ :(]
"Naj živi SuSE"

Zgodovina sprememb…

  • spremenil: fx ()

OwcA ::

Uporabi raje ifstream in ofstream.

NE uporabljat iostream.h, temveč iostream (brez končnice).
stdio.h ne rabiš, ravno namesto nje imaš iostream, če bi jo pa že hotel uporabiti in pišeš C++ kodo, potem poseži po <cstdio>
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

fx ::

OwcA če uporabim iostrem brez .h ni vrže toliko napak, da je groza, za cuot, cin itd. za te osnovne zadeve.

Potem če uporabim:
#include <ifstream> and #include <ofstream> 

mi javi da ju ni v direktoriju. Zdaj pa nevem kaj je narobe to da imam SuSE 9.0 ali pa moje ne znaje.

"Naj živi linux"

Zgodovina sprememb…

  • spremenil: fx ()

fx ::

uporabiuti moram fstream

"Naj živi Linux"

OwcA ::

Bodisi imaš obupno nastavljen prevajalnik, ali pa je kar ta sam obupen.
Naloži si najnovejši GCC tesno sledeč navodilom. Potem bi moralo deliati.
Otroška radovednost - gonilo napredka.

fx ::

OwcA katerega pa mi priporočaš

"Naj živi linux"

OwcA ::

Od zastonj GCC, drugače Intel C++ Compiler.
Otroška radovednost - gonilo napredka.

fx ::

Bolj se nagibam, k Intel? C++ compiler, je pa en problem, ko mi piše naj izberem system mi piše samo linux*. Kaj ta comiler dela na vseh linuxih, ali samo za določeni linux.

"Naj živi Linux"

Zgodovina sprememb…

  • spremenil: fx ()

64202 ::

Gcc je "official" sistemski compiler za linux in je torej naravna izbira (ves c/c++ softver na distribucijah se prevaja z njim). Icc je pa namenjen high-performance numericnemu racunanju & razkazovanju intelovih procesorjev. Zaenkrat si ne kompliciraj zivljenja in uporabi gcc. Ja, drugace icc bi moral delovati na katerikoli distribuciji.

Pa verjetno si si pozabil samo zinstalirati kaksen *-devel-* package. Po novem ima precej distribucij nagnjenje, da lomijo development stvari na 800 paketov, da ga locijo od runtime dela. Userji ocitno norijo ko vidijo 2 mega velik fajl /usr/lib/libc.a (staticna std. knjiznica za c) :).

Zgodovina sprememb…

  • spremenilo: 64202 ()

OwcA ::

Z malo akrobacijami ICC prevaja zelo lepo (hitreje kot GCC) tudi za AMD-je, celo za Hammerje. ;)
Edini problem so GCC-jeve nestandardne razširitve, ki jih ICC ne podpira. Najboljša rešitev je, da imaš oba prevajalnika. Kadar ne gre drugače uporabiš GCC, drugače pa ICC, ki se povrh vsega bolj drži standardov.
Otroška radovednost - gonilo napredka.

fx ::

OwcA to je vse lepo in prav, samo google mi na ICC SuSE ven vrže strani za malega olimpijskega, ker pa naša občina ni tako napredna kot jaz, še vedno ostajamo na zelo hitrem intenetu, ki se lahko primerja z polžjo hitrstjo, bi te prosil če bi mi lahko ti poiskal www ali pa gdo drug. Imam SuSE 9.0 pro. če vam bo to kaj pomagalo.

Zahvaljujem se vnaprej.

"Naj živi Linux"

Zgodovina sprememb…

  • spremenil: fx ()

OwcA ::

Otroška radovednost - gonilo napredka.

fx ::

Vem da sem malo že tečen, ampak bom vse eno vprašal, kaj vse moram bokljukati ko kliknem nadaljuj.

"Naj živi Linux"

OwcA ::

Ali je sploh realno pričakovati, da ti bo uspelo stvar uporabljati, če je ne znaš niti iz spleta potegniti?

Raje ostani kar pri GCC in kakšnem paketnem sistemu inštalacije.
Otroška radovednost - gonilo napredka.

fx ::

Ok gremo naprej z delom. Zdaj me zanima samo če C++ ve delati z binarnim sistemom predvsem to kako pravlno zapišem, ker za hexa (Ecs == 0x1B;) sem našel za bin pa ne.

"Naj živi linux"

Zgodovina sprememb…

  • spremenil: fx ()

fx ::

Ono ne potrebujem, če pa napišete pa nebom imel nič proti. Sedaj pa nevem iz dec številke pretvoriti v hexa številko.

"Naj živi Linux"

Zgodovina sprememb…

  • spremenil: fx ()

Vesoljc ::

hmm...
glej, vse cifre so v racunalniku zapisane v hex nacinu, kako je ti vidis je pa samo stvar interpretacije, lahko jo izpises v dec, okta ali pa v binarnem nacinu. druga stvar je pa ce imas ti to cifro zapisano kot nek string...

dej primer
Abnormal behavior of abnormal brain makes me normal...
««
«
1 / 9
»»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Program za C++ jezik

Oddelek: Programska oprema
232837 (1872) popaj113
»

Kako bi naredil en ultra simple programček?

Oddelek: Programiranje
492307 (1588) AtaStrumf
»

C++ & XP

Oddelek: Programiranje
241655 (1262) Exilian
»

C++ in pavza

Oddelek: Programiranje
161204 (965) napsy
»

c++ datoteke

Oddelek: Programiranje
464019 (3508) Vesoljc

Več podobnih tem