Hirdetés

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

  • peeeeeti
    csendes tag

    Sziasztok!

    Nekem van egy feladatom:

    a program árucikkek kódjait kezelik. kérje be a felhasználótól az árucikk azonozító kódját, az azonosító kód csak akkor érvényes ha megfelel a következő követelményeknek:

    - pontosan 6 számjegy karakterből áll
    - ha az első 5 számjegy összegét 6-tal elosztva a maradék megegyezik a 6. számjeggyel
    egy érvényes azonosító 123453
    ha az azonosító nem érvényes ezt hibaüzenettel jelezze!
    a kódok bevitelét és ellenőrzését addig ismétleje amíg az árucikk kódja helyett üres karakterlánc nem érkezik.

    a progit sejtem,hogy kell elkezdeni:

    *******************************************************
    #include<stdlib.h>
    #include<conio.h>

    int getline(char s[],int lim) {
    int i,c;

    for (i=0;i<lim && (c=getchar())!=EOF && c!='\n';++i) s[i]=c;
    s[i]='\0';
    while (c!=EOF && c!='\n') c=getchar();
    return i;
    }

    void main(void){
    int kod[6];
    int a;
    getline(kod,6);

    }

    *******************************************************
    Azt nem vágopm,hogy a tömb 5 első elemét,hogy adom össze?
    Össze kell adni az első 5 bekért karaktert,majd egy tömbbe le kell tárolni őket? :U
    Bocs,hogy hosszúra sikerült a dolog!:S

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

    using namespace std;

    bool szamjegyeke(string);
    string spacevalfeltolt(string);
    int osszeg(int*, int);

    int main()
    {
    string szam;
    int tomb[6], i = 0;
    do
    {
    if(i) cout << "A meadott szamsor nem megefelelo!";
    system("pause");
    system("cls");
    cout << "Add meg a 6 szamjegyet: ";
    getline(cin, szam);
    if(szam.empty()) break;
    szam = spacevalfeltolt(szam);
    istringstream is(szam);
    is >> tomb[0] >> tomb[1] >> tomb[2] >> tomb[3] >> tomb[4] >> tomb[5];
    i++;
    }while(szam.size() < 6 || szamjegyeke(szam) || osszeg(tomb, 5) / 6 == tomb[5]);
    system("pause");
    }

    bool szamjegyeke(string s1)
    {
    for(int i = 0; i < s1.size(); i++)
    if(!isdigit(s1[i]))
    return false;
    return true;
    }

    string spacevalfeltolt(string s1)
    {
    string s2;
    for(int i = 0; i < s1.size(); i++)
    {
    s2 += s1[i];
    s2 += ' ';
    }
    return s2;
    }

    int osszeg(int *a, int hossz)
    {
    int eredmeny;
    for(int i = 0; i < hossz; i++)
    eredmeny += a[i];
    return eredmeny;
    }

    Ez valami beadandó?

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