Frage for mit Array



  • Hallo zusammen;

    folgende Aufgabe:

    Lege mit Hilfe einer for-Schleife die zahlen 1-10 im array ab:

    int main() 
     }    
          int array[10]; 
          int i;
    

    Mit

    for (i = 0; i <=10; array++)
        {
            cout << array;
    }
    

    Komm ich nicht weiter. Kann jemand helfen?



  • Du willst uns verarschen oder..? Hallo Eigeninitiative? Lern zuerst selber was, die Texteingabe des Forums kannst du ja auch selbst bedienen...



  • Ich denke so will der Aufgabensteller seine Lösung sehen:

    #include <cstdlib>
    #include <iostream>
    #include <climits>
    
    template<typename T, std::size_t N> void fill_array(T* arr)
    {
        arr[N]=N;
    	return fill_array<T,N-1>(arr);
    }
    template<> void fill_array<int, 0>(int* arr)
    {
    	arr[0]=0;
    	return;
    }
    
    int main()
    {
    	int arr[10];
    	for(;;) break; //hier die for schleife
    	fill_array<int, sizeof(arr)/sizeof(int)-1>(arr);
    	std::size_t i = 0u;
    	while(i!=sizeof(arr)/sizeof(int))
    		std::cout<<i++[arr]<<" ";
    	std::cin.clear();
    	std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    	std::cin.get();
    	return 0;
    }
    


  • asdfasd: <cstdlib> ist unnötig, <climits> muss zu <limits> gemacht werden und du hast ne Verschiebung: Dein Array enthält 0,...,9, aber es war 1,...,10 gefordert.



  • Im Übrigen schreibt man

    sizeof(arr)/sizeof(int)
    

    besser als

    template<typename T, std::size_t N>
    std::size_t array_size(T (&)[N]) { return N; }
    
    // ...
    
    array_size(arr)
    

    Dann lässt sich das Ding keine Zeiger füttern.

    Ansonsten...was haltet ihr hiervon?

    #include <algorithm>
    #include <cstddef>
    #include <functional>
    #include <iostream>
    #include <iterator>
    
    template<typename T, std::size_t N>
    std::size_t array_size(T(&)[N]) { return N; }
    
    int main() {
      int arr[10] = {  };
    
      std::fill(arr, arr + array_size(arr), 1);
      std::transform(arr + 1, arr + array_size(arr), arr, arr + 1, std::plus<int>());
    
      std::copy(arr, arr + array_size(arr), std::ostream_iterator<int>(std::cout, " "));
      std::cout << std::endl;
    }
    


  • Ihr konntet sicherlich alle schon seit der Geburt c++ und musstet es nie lernen?

    #include <iostream>
    
    int main()
    {
       int arr[10];
    
       for(int i = 0; i < 10; ++i)
       {
           arr[i] = i + 1;
           std::cout << arr[i] << "\n";
       }
    
       return 0;
    }
    


  • HighLigerBiMBam schrieb:

    Ihr konntet sicherlich alle schon seit der Geburt c++ und musstet es nie lernen?

    Doch, aber zumindest in meinem Fall sah das Lernen nicht so aus, dass ich Übungsaufgaben zum Lösenlassen ins Internet gestellt habe, die ich auch mit zwei Minuten erstes Kapitel lesen selbst hätte lösen können.



  • Ich weiß schon wie das aussah, danke. Aber dann hätte man es bei der Antwort von ccpete belassen können, zumal bei dem Post vom TA alles falsch ist.



  • Athar schrieb:

    die ich auch mit zwei Minuten erstes Kapitel lesen selbst hätte lösen können.

    Dies wage ich stark zu bezweifeln. Die Erfahrung, auch hier im Forum, zeugt anderes.
    Und wenn es dich nervt, dann ignoriere es doch einfach. Und nerve dich nicht noch mehr, indem du andere nervst.
    P.S. ich weiß dass die Antworten nicht von dir sind. Dies gilt für alle, die diesen Unsinn unterstützen. Der im übrigen in seiner Überheblichkeit noch nicht mal funktioniert.


Anmelden zum Antworten