c code: Quersumme einer eingegeben zahl bilden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • c code: Quersumme einer eingegeben zahl bilden

    hi,
    ich bin noch ein realtiver neuling auf dem gebiet der c-programmierung.
    hab mich früher damit mal etwas befasst, und will jetzt wieder intensiver damit anfangen. seit gestern hänge ich hier mit den code fest.

    Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. //eingabe der zahl
    4. char *X_zahleingabe(char *zahl)
    5. {
    6. printf("Zahl >> ");
    7. scanf("%c",&zahl);
    8. return zahl;
    9. }
    10. //zahlarray deklarieren
    11. char *X_zahlarray()
    12. {
    13. char *zahl;
    14. zahl=(char*) calloc((2),sizeof(int));
    15. return zahl;
    16. }
    17. //ergebnisarray deklarieren
    18. char *X_ergarray()
    19. {
    20. char *erg;
    21. erg=(char*) malloc(1*sizeof(int));
    22. return erg;
    23. }
    24. //array mit nulln füllen
    25. char *X_nullarray(char *erg)
    26. {
    27. int i;
    28. while(i=0)
    29. {
    30. erg[i]='0';
    31. i++;
    32. }
    33. return erg;
    34. }
    35. //addition
    36. char *X_add(char *zahl,char *erg)
    37. {
    38. int speicher=0;
    39. int carry=0;
    40. int i;
    41. for(i=0;i<=1;i++)
    42. {
    43. speicher+=carry;
    44. carry=0;
    45. speicher+=zahl[i]-'0';
    46. if(speicher>9) {
    47. carry=1;
    48. speicher-=10;
    49. }
    50. erg[i]+=speicher+'0';
    51. printf("ERGEBNIS (add) >> %c\n",erg);
    52. }
    53. }
    54. //main
    55. int main()
    56. {
    57. char *zahl;
    58. char *erg;
    59. char *null;
    60. int i;
    61. int speicher;
    62. int carry;
    63. zahl=X_zahlarray();
    64. zahl=X_zahleingabe(zahl);
    65. erg=X_ergarray();
    66. null=X_nullarray(erg);
    67. printf("zahl (main) >> %c\n",zahl);
    68. erg=X_add(zahl,erg);
    69. printf("ERGEBNIS (main) >> %c\n",erg);
    70. free(zahl);
    71. free(erg);
    72. system("PAUSE");
    73. return 0;
    74. }
    Alles anzeigen


    eigentlich dürfte es nicht so schwer sein, aber ka warum das nicht geht.
    das programm soll erstmal nur die quersumme einer eingegeben zahl mit 3 stellen berechnen. der hat aber im ergebnisarray schon was stehen (kommt immer 8), und wenn ich mit die eingegeben zahl vor add printen lasse hat der nur die erste stelle drin.
    naja lange rede kurzer sinn, schaut am besten mal selber.

    schonmal danke fürs lesen :)
    mfg
  • bin nicht mehr so fit in C.. die ganzen pointer verwirren mich ;)

    aber hier mal mein etwas kürzerer lösungsansatz..
    du fragst die zahl per konsole ab, also erhältst du einen string
    ein string ist milde gesagt nichts anderes als ein char-array

    Quellcode

    1. String zahl = "hans";
    2. cout << zahl[0]; //h
    3. cout << zahl[1]; //a
    4. cout << zahl[2]; //n
    5. cout << zahl[3]; //s


    mit atoi() wandelt man chars wieder um in integer..
    also müsste man mit folgendem code die umgewandelten chars addieren können

    Quellcode

    1. String zahl = "12";
    2. int summe = atoi(zahl[0]) + atoi(zahl[1]);
    3. cout << summe;


    letztendlich braucht man noch die größe des char arrays..
    und die ermittelst du mit sizeof()

    Quellcode

    1. int summe=0;
    2. for(int i=0; i<sizeof(zahl); i++)
    3. summe += atoi(zahl[i]);


    sollte dir also die quersumme geben

    korrekt so?