C++Ongelma

Mikähän oheisessa koodissa on vikana?


#include

int main()

{
   int i;
   while(i>0)
   {
   i ;
   if(i@0==0)
   break;
   }
   cout
17965
Äänestä

Muut lukivat myös

Vastaukset 17

Vanhimmat

Käsky system tarvitsee kirjaston
#include ..#:)

Äänestä

ainakin i:n alkuarvo on nolla. pistä vaikka do..while lauseke tai vaikkapa pelkkä 1 tuohon while -kohtaan.

Mitä tuo i@0 muuten oikein meinaa? Siis näin matemaattisesti. En oikein ymmärrä tuota logiikkaa (vaikka se näyttää kyllä toimivan)

Äänestä
  • Ykkösellä toimii!
    % merkitsee jakojäännöstä eli tuossa ohjelmassa, jos luku i jaetaan 400:lla ja jakojäännös vastaa nollaa, niin luku i on silloin jaollinen 400:lla.

    Äänestä

  • sjk kirjoitti:

    Ykkösellä toimii!
    % merkitsee jakojäännöstä eli tuossa ohjelmassa, jos luku i jaetaan 400:lla ja jakojäännös vastaa nollaa, niin luku i on silloin jaollinen 400:lla.

    Ehkäpä kuitenkin joskus opin

    400/400 = 0 ???

    Äänestä

  • aloittelija kirjoitti:

    Ehkäpä kuitenkin joskus opin

    400/400 = 0 ???

    int a=1;
    while (a < 10)
       {
          if (a%2 == 0)
             {
                cout

    Äänestä

  • masa kirjoitti:

    int a=1;
    while (a < 10)
       {
          if (a%2 == 0)
             {
                cout

    Nyt ymmärsin.
    400*(400/400)-400=0
    400*(800/400)-800=0

    Äänestä

-Muuttujan (i) voisi alustaa vaikka nollaksi,
-system()-funktion käyttö sucks, jos ymmärrät ja
-koko algoritmisi on p:stä.

Äänestä
  • automaattisesti nolla. Tuo EI voi toimia, jos alkuarvona on nolla. Yksi tapa toteuttaa tämä on myös laittaa

    while(i@0)
    i ;

    Äänestä

  • aloittelija kirjoitti:

    automaattisesti nolla. Tuo EI voi toimia, jos alkuarvona on nolla. Yksi tapa toteuttaa tämä on myös laittaa

    while(i@0)
    i ;

    Näyttääpä toimivan, kuitenkin i pitää siinäkin alustaa ykköseksi.

    Äänestä

  • sjk kirjoitti:

    Näyttääpä toimivan, kuitenkin i pitää siinäkin alustaa ykköseksi.

    taisi tulla jonkilainen ajatuskatkos ;)

    Äänestä

tämmöinen voisi olla toimivampi:

#include
#include

void main(void)
{
   int i=0;

   do
      {
         i ;
      }

   while (i@0!=0) ;

   cout

Äänestä
  • Parillisuuden testausta silmukassa voi käyttää vaikka yksinkertaisen animaation tekemisessä:
    Näytetään jotakin kun luku on parillinen ja tehdään muuta silloin kun luku ei ole parillinen.

    Ja lukujen tutkimisessa tietenkin joinakin esimerkkeinä.

    Äänestä

  • VisualBasicissa on mahdollista ReDim-lauseella saada taulukon
    koko määritellyksi tuolla syöttömuuttujan arvolla. Mitenkähän
    moinen onnistuisi c :lla?



    #include
    #include

    void main(void)
    {
    int i=1,j=0,t=1;
    int jako[1000] = {0};

    clrscr();

    do
    {
       
    cout

    Äänestä

  • sjk kirjoitti:

    VisualBasicissa on mahdollista ReDim-lauseella saada taulukon
    koko määritellyksi tuolla syöttömuuttujan arvolla. Mitenkähän
    moinen onnistuisi c :lla?



    #include
    #include

    void main(void)
    {
    int i=1,j=0,t=1;
    int jako[1000] = {0};

    clrscr();

    do
    {
       
    cout

    new varaa muistista tilaa muuttujalle. Se palauttaa NULLin jos tilaa ei löydy:

    int n;
    scanf( "%d", &n);
    int *k;
    if( (k = new int[n]) == NULL)
    {
    printf("No Way
    ");
    return 1;
    }
    else
    printf("Ok, U Got It
    ");
    ...

    Äänestä

  • iida kirjoitti:

    new varaa muistista tilaa muuttujalle. Se palauttaa NULLin jos tilaa ei löydy:

    int n;
    scanf( "%d", &n);
    int *k;
    if( (k = new int[n]) == NULL)
    {
    printf("No Way
    ");
    return 1;
    }
    else
    printf("Ok, U Got It
    ");
    ...

    Näin helppoa taulukon koon muuttaminen on Visual Basicilla.

    Sub testaa()
    Dim taulukko() As Double
    Dim i As Double
    Dim j As Double
    Dim t As Double
    Dim a As Double

    t = InputBox("Kuinka monta 400:lla jaollista lukua haluat?", "KYSSÄRI")
    If t > 65536 Then
    MsgBox "Lopeta jo!!", , "JÄRKIINTYMINEN"
    Exit Sub
    End If

    While (j t)
    i = i 1
    ReDim Preserve taulukko(t)

    If i Mod 400 = 0 Then
    j = j 1

    taulukko(j) = i
    End If

    Wend

    For a = 1 To t
    Cells(a, 1).Value = taulukko(a)
    Next

    End Sub

    Äänestä

ii:tä ei ole alustettu mihinkään arvoon. Anna sille alkuarvo 1, niin se softa varmaan tekee mitä pitää.

Äänestä

Nolla on jaollinen millä luvulla tahansa. Jos tarkoitus on etsiä nollaa suurempi luku, joka on jaollinen 400:lla, niin alusta i ko. arvoon. Loopinkin voi optimoida helposti.

int i = tähänjokualkuarvo;
while (i@0) i ;

Äänestä

Kommentoi aloitusta


sjk kirjoitti:

Mikähän oheisessa koodissa on vikana?


#include

int main()

{
   int i;
   while(i>0)
   {
   i ;
   if(i@0==0)
   break;
   }
   cout

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu