Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Yksinkertainen (osa 2)

Sivun loppuun

ttuoppi [27.06.2004 21:07:43]

#

Miksi h********ä muka en voi käyttää clrscr komentoa? Kääntäjäni (Dev-C++) ei löydä ohjelmasta virheitä, mutta valikkoon "Linker" tulee ilmoitus:

c:\documents and settings\tuomas\omat tiedostot\c++\first schoolday of my life v.1.0\untitled1.o(.text+0x1bd):untitled1.cpp: undefined reference to `clrscr'

Aruviel [27.06.2004 21:31:46]

#

Et vain ole linkannut tarvittavaa kirjastoa käyttääksesi tuota funktiota. Minulla ei ole mitään hajua, että kuuluuko mokoma edes stantardiin. Voi olla, että joudut kehittelemään oman "ruuduntyhjentäjän".

Edit: Niinjoo, varmaankin kannattaa valita otsikko, joka kuvaa ongelmaa. Tuollaiset ovat informaatioarvoltaan lähes nolla; ihmisiä ei (välttämättä) kiinnosta lukea epämääräisesti nimettyjä ketjuja.

Metabolix [27.06.2004 21:43:49]

#

C(++) ei tietääkseni sisällä sellaista, ei löydy ainakaan VC++:n ohjeista (sis. PlatformSDK).
Lisää vaikka makro:
#define Cls; {cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";}
Siinä on 50 rivinvaihtoa.

ttuoppi [27.06.2004 21:49:25]

#

Metabolix kirjoitti:

C(++) ei tietääkseni sisällä sellaista, ei löydy ainakaan VC++:n ohjeista (sis. PlatformSDK).
Lisää vaikka makro:
#define Cls; {cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";}
Siinä on 50 rivinvaihtoa.

mitä toi meinaa? Tai siis toki 50 rivinvaihtoa ajaa saman asian kuin ruuduntyhjennys mut toi #define Cls;?

Aruviel kirjoitti:

Edit: Niinjoo, varmaankin kannattaa valita otsikko, joka kuvaa ongelmaa. Tuollaiset ovat informaatioarvoltaan lähes nolla; ihmisiä ei (välttämättä) kiinnosta lukea epämääräisesti nimettyjä ketjuja.

yritän parantaa tapani.

thefox [27.06.2004 22:09:09]

#

Lisää Dev-C++:n Additional library / Object files (tms) kohtaan conio.o (hakemistopolun kera).

Metabolix [27.06.2004 22:43:39]

#

ttuoppi kirjoitti:

mitä toi meinaa? Tai siis toki 50 rivinvaihtoa ajaa saman asian kuin ruuduntyhjennys mut toi #define Cls;?

Tuo tarkoittaa, että aina kun koodissasi lukee "Cls;", esikääntäjä vaihtaa siihen tilalle sen "cout << [<50 rivinvaihtoa>]."

Dustbin [30.06.2004 22:34:19]

#

Minulla ainakin tulee vierityspalkki siihen viereen jos menee yli ruudun teksti. Miten sen saisi pois/tyhjennettyä kaikki tekstit?

Anssi V [30.06.2004 23:07:39]

#

fawkz kirjoitti:

Lisää Dev-C++:n Additional library / Object files (tms) kohtaan conio.o (hakemistopolun kera).

Ja includeta sorsaan "conio.h", tieten...

Edit: Googlettamalla lontooksi:

Include conio.h to your source, and add C:\Dev-C++\Lib\conio.o to "Further Object Files" in Project Options (where C:\Dev-C++ is where you installed Dev-C++)

ezuli [01.07.2004 15:05:04]

#

Tai jos teet ohjelmaa windowsille/dossille, voit käyttää:

system("cls");

system funktio löytyy muistaakseni stdlib.h

Gaxx [01.07.2004 16:48:27]

#

ezuli kirjoitti:

system funktio löytyy muistaakseni stdlib.h

iostream.h :)

ezuli [01.07.2004 16:55:40]

#

Ainakin Dev-C++ väittäisi sen olevan stdlib.h.
Kokeile vaikka kääntää seuraavat, jos et usko:

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

int main()
{
      printf("  CCCC\n");
      printf(" C    C\n");
      printf("C\n");
      printf("C\n");
      printf(" C    C\n");
      printf("  CCCC\n");
      system("PAUSE");
      return 0;
}
#include <stdio.h>
#include <stdlib.h>

int main()
{
      printf("  CCCC\n");
      printf(" C    C\n");
      printf("C\n");
      printf("C\n");
      printf(" C    C\n");
      printf("  CCCC\n");
      system("PAUSE");
      return 0;
}

Gaxx [01.07.2004 17:03:12]

#

Mulla on DevC++ 4.9.8.0 ja kyllä tämä mulla ainakin kääntyy

#include <iostream>

int main()
{
    system("PAUSE");
    return 0;
}

Mutta tuo alempi esimerkkisi kääntyy myös :S

Taitaa olla kummassaki... tai jotai.

ezuli [01.07.2004 17:10:03]

#

No se on sitten joku uusi lisäys. Itselläni on Dev 4

Gaxx [01.07.2004 18:02:29]

#

Kysympä tässä samalla kun otsikko on sen verran laaja, että onko c++:ssa merkkijonon paloittelufunktioita? Eli siis tyyliin:

char tervehdys[20] = "Moro, kuis hurisee?";
left(tervehdys, tervehdys, 4); // arvon_saaja, luettava_muuttuja, merkkien_määrä
printf("%s!", tervehdys); // Tulostaa "Moro!"

Anssi V [01.07.2004 18:07:06]

#

Gaxx kirjoitti:

onko c++:ssa merkkijonon paloittelufunktioita?

Funkkarista en tiedä, mutta voihan ne kopioida merkki merkiltä...

Gaxx [01.07.2004 18:10:59]

#

Tein tossa vaan ite funktionit merkkijonojen palotteluun, kun en ollut aijemmin tavannut sellasia, mutta sitten pälkähti päähän, että jospa sellaset onkin jo standardikirjastossa niin ne mitä ilmeisimmin on nopeempia.

firebug [01.07.2004 19:06:33]

#

Suosittelisin käyttämään stringejä merkkijonotaulukoiden sijaan. Tässäpä linkki mistä löytyy kaikki string-luokasta löytyvät funktiot: http://www.cppreference.com/cppstring.html

esim.

string tervehdys("Moro, kuis hurisee?");
string pala = tervehdys.substr(4);
cout << pala << endl;

Aruviel [01.07.2004 19:09:27]

#

Kun otit puheeksi C++:n, niin string-luokan metodeilla pitäisi onnistua. Katso stringin metodit substr ja copy.

http://cppreference.com/cppstring.html

Edit: Pitäisi varmaan refreshata ennen viestin lähettämistä :)

Gaxx [02.07.2004 11:43:06]

#

Onko sillä sitten jotain merkitystä kumpaa käyttää? Siis tarkoitan, että onko string:t jotenkin parempia kuin char:t. Onko niiden ainoa huono puoli niiden (ehkä)hankalempi käsittely?

thefox [05.07.2004 05:20:43]

#

Öhöm, stringin on tarkoitus olla nimenomaan helpompi ja turvallisempi vaihtoehto char-taulukoille. Nopeuserojen ei pitäisi olla merkittäviä, jos C++-miesten propagandaan on uskominen.

Metabolix [05.07.2004 05:30:25]

#

Nopeuseroilla ei tosiaan ole juurikaan merkitystä, koska yleensä tekstinkäsittely ei ole ohjelman kriittisimpiä osia ajan kannalta.

Gaxx [05.07.2004 12:01:41]

#

No, kaipa täytyy sitten siirtyä niihin stringeihin, vaikka en nyt tuosta turvallisuudesta tiedä kun vääntää niille käsittelyfunktiot. Tosin noiden funktioiden nopeusero voi olla himan eri :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta