Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Aloittelijan ongelmia

Amatööri [19.06.2006 21:17:48]

#

Päivää kaikille.
Tämä oli ensimmäinen ohjelmoitia käsittelevä keskustelupalsta minkä löysin, joten kysyn asiaa teiltä.

Olen vasta kiinnostunut ohjelmoinnista ja harjoitteluni tyssäsi heti ensimmäiseen esimerkkiin sivulla http://cs.stadia.fi/~silander/ohjelmointi/

Latasin netistä ohjelman Dev-C++ 4.9.9.2 ja kun kopioin siihen koodin pätkän:

#include <stdio.h>
    void main(void)
    {
        int x = 1;
        char ch = 'a';
        float y=5.7;

        printf ("x:n arvo on %d\n",x);
        printf ("y:n arvo on %f\n",y);
        printf ("ch:n arvo on %c\n",ch);
    }

Ja painan nappia 'compile & run', niin tulee virheilmoitus : `main' must return `int'
Kun vaihdan sanan 'void' sanaan 'int', niin ruudussa välähtää jokin ikkuna eikä muuta.

Jos taas käynnistän sivulla http://cpp.mureakuha.com/cpp/calkeet.htm olevan esimerkin:

#include <stdio.h>
#define PII 3.14159

void laske(float r, float *ala, float *tilavuus)
{
  *ala = 4 * PII * r * r;
  *tilavuus = 4 * PII * r * r * r / 3;
}

int main(void)
{
  float pallon_sade, pallon_ala, pallon_tilavuus;
  printf("Anna pallon säde: ");
  scanf("%f", &pallon_sade);
  if (pallon_sade < 0)
    printf("Säde ei voi olla negatiivinen. \n");
  else
  {
    laske(pallon_sade, &pallon_ala, &pallon_tilavuus);
    printf("Ala: %f \n", pallon_ala);
    printf("Tilavuus: %f \n", pallon_tilavuus);
  }
  return 0;
}

niin, näyttöön avautuu ikkuna jossa lukee 'anna pallon säde:'.
näppäilen esim 50 ja enter... sitten ikkuna katoaa.

-Miten saan ohjelmat toimimaan oikein?
-Onko olemassa suomenkielistä ohjelmointi ohjelmaa?
-Jos ei niin, onko Dev-C++ hyvä ohjelma aloittelijalle?

os [19.06.2006 21:30:03]

#

Ohjelma toimii oikein. Ongelmasi on se, että ikkuna häviää ruudulta heti, kun ohjelman suoritus loppuu. Jos ajat ohejlmasi Windowsin komentoriviltä (cmd.exe), niin sen tuloste jää näkyviin ja ohejlma toimii "niin kuin pitää". Myös Dev-C++:n avaaman ikkunan saa jäämään näkyviin, kun lisää ohjelman loppuun (ennen return 0;:aa) jonkin komennon, joka odottaa syötettä käyttäjältä. Hyviä purkkaviritelmiä ovat

scanf("%*c"); // odottaa, että käyttäjä syöttää merkin

ja

scanf("%*c%*c"); // odottaa, että käyttäjä syöttää kaksi merkkiä

Suomenkielisiä IDE:jä ei tietääkseni ole olemassa. Dev-C++ on ihan hyvä.

EDIT:
Nykyisen C-standardin mukaan main-funktion paluuarvon täytyy olla tyyppiä int. Lukemasi opas on siis tältä osin vanhentunut.

#include <stdio.h>

int main(void) {
  int x = 1;
  char ch = 'a';
  float y=5.7;

  printf ("x:n arvo on %d\n",x);
  printf ("y:n arvo on %f\n",y);
  printf ("ch:n arvo on %c\n",ch);
  return 0;
}

Tumpelo [19.06.2006 22:02:10]

#

Myös stdiolle löytyy uudempi merkintätapa, nimittäin <cstdio>.

Meitsi [19.06.2006 22:03:35]

#

Devc++ tukee käännöksiä. Olin joskus aikoja sitten tehnyt käännöksen devc++:salle suomeksi, mutta poistin sen tässä viimeaikoina sivuiltani koska se oli hieman huono. Voisin tässä lomilla kääntää uusiksi jos kerkiän. :)

Deewiant [19.06.2006 22:11:56]

#

Tumpelo kirjoitti:

Myös stdiolle löytyy uudempi merkintätapa, nimittäin <cstdio>.

Se ei ole uudempi merkintätapa, vaan C++:n otsake. C:tä käytettäessä includetetaan edelleen <stdio.h>.

Tumpelo [19.06.2006 22:46:32]

#

Deewiant kirjoitti:

Tumpelo kirjoitti:

Myös stdiolle löytyy uudempi merkintätapa, nimittäin <cstdio>.

Se ei ole uudempi merkintätapa, vaan C++:n otsake. C:tä käytettäessä includetetaan edelleen <stdio.h>.

Ah, hyvä tietää.

Vastaus

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

Tietoa sivustosta