Hárommal osztható számok c++

Hárommal osztható számok c++
2019-02-19T08:11:05+01:00
2019-02-19T10:43:29+01:00
2022-08-11T10:20:30+02:00
prog++131
Sziasztok! Ez a nap kihivása:
• Töltsünk fel egy n (az n értékét beolvassuk) elemű tömböt a 30 után következő 3-mal osztható számokkal, majd írassuk ki a tömb elemeit. Hol van a hiba? Mert én nem kapom

int t [100]; int n; cout<<"Elemek szama="<<endl; cin>>t[n]; for (int i = 0,j=33; i < n; i++,j=j+3) t
= j; cout<<"Elemek: "<<endl; for(int e; e<t[n]; e++) cout<<t[e] <<" "<<endl;


Mutasd a teljes hozzászólást!
Sajátomat javítva:

nem t[n]-be kell beolvasni, hanem t[ i ]-be.

Egyébként értelmezzük a feladatot:

Első körben azt mondja a feladat, hogy hozzunk létre egy n elemű tömböt és n értékét olvassuk be.
Mivel n értéke először ismeretlen, így értelemszerűen ennek a beolvasásával kell kezdeni. Mivel csak úgy nem tudunk n-be beolvasni, ezért inicializálni kell.

int n;
Következő lépésben beolvassuk az értékét:

cin>>n;
Ekkor már megvan n értéke, inicializálhatjuk a "t" tömböt n mérettel:

int t[n];

Miután ez is megvan, feltöltjük a tömböt:

for(int i=0; i<n; i++){ t[i] = (i+1)*3+30; //i=0 esetén t[0] = (0+1)*3+30; vagyis t[0] = 33; lesz, ami az első 30 feletti 3-mal osztható szám //i=1 esetén t[1] = (1+1)*3+30; vagyis t[1] = 36; és így tovább }

Ezután pedig kiíratjuk a számokat:

cout<<"A számok:"<<endl; for(int i=0; i<n; i++){ cout<<t[i]<<endl; }
Mutasd a teljes hozzászólást!

  • Gondold végig, hogy mit csinálsz.

    De röviden:

    Létrehozol egy 100 elemű tömböt, inicializálsz egy n változót. Beolvasol a t[n]-be.

    C++ implementációtól (és fordítótól) függően az n értéke inicializáláskor 0 lesz. Tehát a t[0]-ba olvasol be valójában.

    Utána elindítasz egy for ciklust i=0-tól i<0-ig. 

    Szóval gondold végig egy kicsit, hogy mit kell javítani.

    Szerk:

    Egy kis segítség (vagyis ez lenne a helyes kód):
    inicializálod az n változót, beolvasod az értékét.
    inicializálsz egy t[n] tömböt.

    i=0-tól i<n-ig elindítasz egy ciklust.

    t[n]-be letárolod az i*3+33 értékét (ez ugyebár i=0 esetén pont 33, i=1 esetén 36, ...).

    Végül kiíratod az eredményt.
    Mutasd a teljes hozzászólást!
  • Csaó

    A logikát helyesnek tartom, hogy induljunk a 33-tól adogassunk hozzá hármat N darab lépésben és minden lépésnél mentjük a tömb-be az értéket. Ha
    i = 0; j = 33, t[i]= j
      (ez a kódodban viszont nem így szerepel lásd lejjebb ) tehát a t 0. eleme 33 az 1. eleme 36 lesz és így tovább.

    A kódodban van szintatikai / logikai hiba is. Az első for ciklusodon belül t = j értelmetlen kifejezés. Ott ha jól értem a t tömb i. elemére szeretnél hivatkozni és abba belerakni a j változó értékét, ezt mindeképpen javítsd.

    A második for ciklusodnál pedig nincs inicializálva a ciklusváltozó (e). Nem fogja tudni a for ciklus honnan induljon, valamint az sem helyes logikailag hogy meddig menjen tehát az e<t[n]. A kifejezésnek van értelme viszont a feladat azt mondja hogy N darab elemet kérünk be és N darab elemet írassunk ki (annyit írjunk ki amennyit bekértünk tehát kisebb n-ig szeretnénk kiíratni, ugyanaz mint amikor feltöltöttük a tömböt).

    Remélem segítettem, sok sikert.
    Mutasd a teljes hozzászólást!
  • Sajátomat javítva:

    nem t[n]-be kell beolvasni, hanem t[ i ]-be.

    Egyébként értelmezzük a feladatot:

    Első körben azt mondja a feladat, hogy hozzunk létre egy n elemű tömböt és n értékét olvassuk be.
    Mivel n értéke először ismeretlen, így értelemszerűen ennek a beolvasásával kell kezdeni. Mivel csak úgy nem tudunk n-be beolvasni, ezért inicializálni kell.

    int n;
    Következő lépésben beolvassuk az értékét:

    cin>>n;
    Ekkor már megvan n értéke, inicializálhatjuk a "t" tömböt n mérettel:

    int t[n];

    Miután ez is megvan, feltöltjük a tömböt:

    for(int i=0; i<n; i++){ t[i] = (i+1)*3+30; //i=0 esetén t[0] = (0+1)*3+30; vagyis t[0] = 33; lesz, ami az első 30 feletti 3-mal osztható szám //i=1 esetén t[1] = (1+1)*3+30; vagyis t[1] = 36; és így tovább }

    Ezután pedig kiíratjuk a számokat:

    cout<<"A számok:"<<endl; for(int i=0; i<n; i++){ cout<<t[i]<<endl; }
    Mutasd a teljes hozzászólást!
  • Ha n > 100 hibaüzenetet fogsz kapni.
    Hol írod ki a t tömbe a j értékét?? Ott nagyon hiányzik valami. esetleg
    t[n]
    =j
    A kiírásnál e kezdőértéke nem hiányzik? int e=0

    Elsőre ennyi...
    Mutasd a teljes hozzászólást!
abcd