[C/C++] Wie löse ich dieses Programm?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von franzreb, 15. Mai 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 15. Mai 2007
    Wie löse ich dieses Programm?

    Wer lust un d Zeit hat kann ja mal hier die Aufgabe lösen (in C++)
    Bitte nur Lösungen posten!

    Es ist die Summe der Zahlen von 1 bis n zu berechnen, der Endwert n sei variabel.
    sum = 1 + 2 + 3 + . . . . +(n-1) + n
    Nach dem Lesen von n soll mit new ein Bereich von n int-Speicherstellen angefordert werden, In
    einer Schleife mit Zeigerarithmetik sind in den n Speicherstellen die Zahlen von 1 bis n abzuspeichern.
    In einer weiteren Schleife mit Zeigerarithmetik sind die gespeicherten Werte zu addieren und
    die Summe auszugeben. Man beachte, dass mit der ersten Schleife die Anfangsadresse (Zeiger auf
    den 1. Wert) verloren gehen kann und daher für den 2. Durchlauf in einem Hilfszeiger zu speichern
    ist.
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    hab mal ne lösung aber es is irgendwie noch ein fehler drin, z.b wenn ich 2 eingebe, dann is das ergebnis nicht 3, woran liegt das?

    hier das programm:


    Code:
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int *n_p, *h_p, n, i, summe; 
    
    int main(int argc, char *argv[])
    {
    
    cout << "Bis zu welcher Zahl n wollen Sie zählen: ";
    cin>>n;
    n_p=new int[n];
    h_p=n_p;
    for(i=1; i<n; i++) { 
    
     *n_p=i; 
     n_p++;
     }
    
    n_p=h_p;
    
    for(i=1; i<n; i++) { 
    
     *n_p=i; 
     summe+=*n_p; 
     n_p++;
     }
    printf("Die Summe aller Zahlen von 1 bis %i ist: %i\n", n, summe);
    
     return EXIT_SUCCESS;
    }
     
  4. #3 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    Ich hab das ganze mal in vb programmiert, dann kannste dir das mal angucken vllt findeste selber deinen Fehler:

    PHP:
    Private  Sub Command1_Click ()
    Dim a  As  Integer
    For  1 To Text1 . Text
        a 
    i
    Next i
    Text2
    . Text  a
    End Sub
    Download offline!

    Also zu Erklärung:

    ich starte die for schleife wie du auch von 1 bis n (n ist in diesem fall die zahl im textfeld1)
    danach addiere ich zu variable a einfach immer i hinzu!

    //edit:

    Ich hab mal mit meinen nicht vorhandenen c++ Künsten nen programm gecodet das geht :) mecker bitte nicht über mögliche Fehler oder sonstiges das war mein erstes c++ programm :D:

    PHP:
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif

    #include <iostream>
    #include <cstdlib>

    using  namespace  std ;

    int  * n_p , * h_p n i summe ;

    int main ( int argc char  * argv [])
    {

    cout  <<  "Bis zu welcher Zahl n wollen Sie zählen: " ;
    cin >> n ;
    n_p =new  int [ n ];
    h_p = n_p ;
    for(
    i = 1 i <= n i ++) {

                
    summe = summe + i ;
                            }

    n_p = h_p ;
    printf ( "Die Summe aller Zahlen von 1 bis %i ist: %i\n" n summe );

      return 
    EXIT_SUCCESS ;
    }
    Knusperkeks
     
  5. #4 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    Ich denke der Fehler liegt daran das du den pointer immer nur um 1 (byte) erhöhst und nich um sizeof(int) (4byte ;))

    mfg r90
     
  6. #5 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    Hi !

    Ich habs mal in C gemacht.
    Ich hoffe, es hilft:

    PHP:
    #include <stdio.h>
    #include <stdlib.h>


    int main  ( void )
    {
        
    int     wie_viele tmp sum ;
        
    int      * ptr ;
        
        
    wie_viele      =      0 ;
        
    tmp            =      0 ;
        
    sum            =      0 ;
        
        
    printf  ( "Bis wieviel wollen sie zaehlen ? " );
        
    scanf  ( "%i" , & wie_viele );
        
        if (
    wie_viele  ==  0 )
        {
            
    printf  ( "0 nicht moeglich\n" );
            return    
    EXIT_FAILURE ;
        }
        
        ++
    wie_viele ;  
        
    ptr      =      malloc  ( wie_viele  sizeof  (int));
        if (
    ptr  ==  NULL )
        {
            
    printf  ( "malloc () == NULL: Konnte keinen Speicher reservieren\n" );
            return    
    EXIT_FAILURE ;
        }
        
        
        for (
    tmp  0 tmp  wie_viele tmp ++)
        {
            
    ptr [ tmp ]  =      tmp ;
        }
        
        for (
    tmp  0 tmp  wie_viele tmp ++)
        {
            
    sum        +=     ptr [ tmp ];
        }
        
        
    printf  ( "Die Summe ist %i\n" sum );
        
        
    free  ( ptr );
        return  
    EXIT_SUCCESS ;
    }
    Mfg,

    Kolazomai
     
  7. #6 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    Code:
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main(void)
    {
     cout << "Bitte geben sie die Zahl an, bis zu der gezaehlt werden soll: ";
     int i_Zahl = 0;
     cin >> i_Zahl;
     int *p_iZahlen = new int [i_Zahl];
     for(int i = 0; i < i_Zahl; i++)
     {
     p_iZahlen[i] = i+1; // Hier war glaube ich einer deiner Fehler...
     } // du musst den Iterator i noch mit reinbringen,
     int Summe = 0; // da sonst alles durcheinander geht ^^
     for(int i = 0; i < i_Zahl; i++)
     {
     Summe += p_iZahlen[i];
     }
     cout << endl << endl << "Die Summe der Zahlen von 1 - " << i_Zahl << " betraegt " << Summe << "!" << endl;
     delete [] p_iZahlen;
     system("PAUSE");
     return EXIT_SUCCESS;
    }
    mfg thecoolman4rr
     
  8. #7 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    Jo hab mal den Code von "thecoolman4rr" etwas optimiert:

    Code:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
     int Zahl = 0;
     int Summe = 0;
     
     cout << "Bitte geben sie die Zahl an, bis zu der gezaehlt werden soll: ";
     cin >> Zahl;
    
     Summe = ((Zahl + 1) * (Zahl / 2)) + ((Zahl % 2 > 0) ? (Zahl / 2) + 1: 0);
     
     cout << endl << endl << "Die Summe der Zahlen von 1 - " << Zahl << " betraegt " << Summe << "!" << endl;
     
     system("PAUSE");
     return EXIT_SUCCESS;
    }
    
     
  9. #8 15. Mai 2007
    AW: Wie löse ich dieses Programm?

    Habs nochmal in Perl gemacht:

    Code:
    #!/usr/bin/perl -w
    
    use strict;
    
    my $count = 0;
    my $sum = <STDIN>;
    my $result = 0;
    
    until ($count == $sum)
    {
     $count++;
     $result += $count;
    }
    print $result;
    GreetZ, ~Br4inP4in~
     
  10. #9 18. Mai 2007
    AW: Wie löse ich dieses Programm?

    Hi !

    Mir war langweilig ...

    Code:
    .section .data
    summe: .long 0x0
    anzahl: .long 0x0
    ausgabe: .ascii "%d\n\0"
    eingabe: .ascii "%d\0"
    
    .section .text
    .global _start
    
    
    _start:
     movl $0, (anzahl)
     movl $0, (summe)
    
     pushl $anzahl
     pushl $eingabe
     call scanf
     addl $8, %esp
    
     incl (anzahl)
    
    schleife:
     decl (anzahl)
    
     movl (summe), %ecx
     addl (anzahl), %ecx
     movl %ecx, (summe)
    
     movl $0, %eax
     cmpl %eax, (anzahl)
     jg schleife
    
     jmp ende
    
    ende:
     pushl (summe)
     pushl $ausgabe
     call printf
     addl $8, %esp
    
     movl $1, %eax
     movl $0, %ebx
     int $0x80
    Mfg,

    Kolazomai
     
  11. #10 19. Mai 2007
    AW: Wie löse ich dieses Programm?

    Mir war auch langweilig...
    Brain:mad:-Version:
    Code:
    ++++++++++
    [
     P(80) l(108) s(115) ''(32) e(101) n(110) t(116) e(101) r(114) t(116) h(104) e(101)
     >++++++++>+++++++++++>+++++++++++>+++>++++++++++>+++++++++++>++++++++++++>++++++++++>+++++++++++>+++>++++++++++++>++++++++++>++++++++++
     n(110) u(117) m(109) b(98) e(101) r(114) :(58)
     >+++>+++++++++++>++++++++++++>+++++++++++>++++++++++>++++++++++>+++++++++++>++++++<<<<<<<<<<<<<<<<<<<<<-
    ]
    >. Ausgabe von 'P'
    >--. Ausgabe von 'l'
    >+++++. 's'
    >++. ' '
    >+. 'e'
    >. 'n'
    >----. 't'
    >+. 'e'
    >++++. 'r'
    >++. ' '
    >----. 't'
    >++++. 'h'
    >+. 'e'
    >++. ' '
    >. 'n'
    >---. 'u'
    >-. 'm'
    >--. 'b'
    >+. 'e'
    >++++. 'r'
    >--
    >. Zeilenumbruch
    >,
    ++++++++++++++++++++++++++++++++++++++++++++++++
    ------------------------------------------------
    [
     >[-]>[-]<< auf null setzen
     [>+>+<<-]
     >>[<<+>>-]
     <<
     ++++++++++++++++++++++++++++++++++++++++++++++++
     -------------------------------------------------
     >
     ++++++++++++++++++++++++++++++++++++++++++++++++
     ------------------------------------------------
     [<<+>>-]
     <
     <
     ++++++++++++++++++++++++++++++++++++++++++++++++
     ------------------------------------------------
     >
    ]
    <
    ++++++++++++++++++++++++++++++++++++++++++++++++.
    
    Allerdings hab ich z.Z. noch nen Problem wenn Zahlen größer 10 rauskommen xD

    mfg thecoolman4rr
     
  12. #11 19. Mai 2007
    AW: Wie löse ich dieses Programm?

    Das fasse ich als gelungenen abschluss auf und wenn noch fragen sind dann kannste gerne nen neuen thread aufmachen oder hier noch mal öffnen ;)

    ~close~

    Knusperkeks
     

  13. Videos zum Thema
Die Seite wird geladen...