Hirdetés

Új hozzászólás Aktív témák

  • doc

    nagyúr

    válasz pschio #2724 üzenetére

    ezzel a kóddal több gond is van. de először a kérdéseid:

    ha c++-t használsz, akkor bárhol a kódban tudsz tömböt deklarálni, vagyis meg tudod csinálni amit szeretnél. pl:


    #include <iostream>
    using namespace std;

    int main()
    {
    int x;
    cout << ''Hány elemű legyen:'' << endl;
    cin >> x;
    int a[x];
    cout << ''A tömb mérete (byte): '' << sizeof(a) << '' A tömb mérete (elemszám): '' << x << endl;
    }


    sima C-ben bonyolultabb a dolog, ott annyit tudsz csinálni, hogy van egy pointered, és annak foglalsz annyi memóriát, amennyi kell, a program végén pedig felszabadítod:


    int main()
    {
    int x,*a;
    cout << ''Hány elemű legyen:'' << endl;
    cin >> x;
    a=(int*)malloc(sizeof(int)*x);
    free(a);
    }


    mindkét esetben használhatod a megszokott a[n] formát a tömbelemek eléréséhez

    másik kérdés:
    ha maradékos osztásra gondolsz, a megoldás: %
    pl. 7%3=1 (mivel 7-et osztva 3-mal a maradék 1)

    a forráskódod elég sok sebből vérzik...

    1.)
    int x;
    int tomb[x];

    itt mekkora x? vagy 0 (ekkor 0 elemű lesz a tömböd - sokat nem érsz vele) vagy véletlenszerű értéket kap (fordítótól függően)

    2.)
    a for ciklus magját { } zárójelek közé kell tenni, mert így csak a printf-et hajtja végre x-szer (bár ha a programot kipróbálnál, rájöhetnél könnyen...)

    3.)
    a 'Kérem a(z) {0}.szamot' gondolom ez akar lenni: ''Kerem a(z) %d. szamot'', ugye? :D

    4.)
    scanf(''%d'',&tomb)
    ezzel meg az a gaz, hogy a tombre mutato pointert irod, vagyis a tomb cimet -> akkora General Protection Fault mint egy haz :DD
    helyesen: scanf(''%d'',tomb+i)

    amugy meg feleslegesen bonyolitod, gyorsan csinaltam egy egyszerubb megoldast:

    #include <stdio.h>

    int main()
    {
    int n,i,temp;
    long sum=0;
    printf(''Elemszam: '');
    scanf(''%d'',&n);
    for (i=0; i<n; ++i)
    {
    printf(''\n%d. szam: '',i+1);
    scanf(''%d'',&temp);
    sum+=temp;
    }
    printf(''\nAtlag: %d\n'',sum/n);
    }

Új hozzászólás Aktív témák