#include <iostream>
using namespace std;
int liczba,i;
int suma=0;
int main()
{
cout<<"Ile elementow ma miec tablica?"<<endl;
cin>>liczba;
int liczby[liczba];
for(int i=0;i<liczba;i++)
{
cout<<i+1<<"Liczby: ";
cin>>liczby[i];
}
if(liczby[i]%7==0)
{
suma+=liczby[i];
}
cout<<"Suma liczb podzielnych przez 7: "<<suma<<endl;
return 0;
}
0
2
Bo tutaj int liczby[liczba];
masz UB. Musisz użyć new
jeśli chcesz mieć dynamiczny rozmiar tablicy. Ja jednak polecam użycie jakiegoś kontenera np. std::vector
.
EDIT.
No i ten kod:
if(liczby[i]%7==0)
{
suma+=liczby[i];
}
powinien być w pętli
EDIT2.
W sumie można też w ogóle bez tablicy
#include <iostream>
using namespace std;
int liczba = 0, n = 0, suma = 0;
int main(){
cout << "Ile elementow ma miec tablica? ";
cin >> n;
for(int i = 0; i < n; i++) {
cout << i+1 << " Liczby: ";
cin >> liczba;
if (liczba % 7 == 0) {
suma += liczba;
}
}
cout << "Suma liczb podzielnych przez 7: " << suma << endl;
return 0;
}
4
Wersja z bardziej intensywnym użyciem biblioteki STL.
#include <iostream>
#include <iterator>
#include <numeric>
using namespace std;
int main()
{
istream_iterator<int> it(cin);
cout << accumulate( istream_iterator<int>(it),istream_iterator<int>(),0,[](int a, int b){ return b%7==0? a+b:a; } ) << endl;
}
0
Dlaczego tak: int liczby[liczba];
?!?
W internecie są tony informacji, jak to zrobić:
https://duckduckgo.com/?t=ffab&q=create+array+of+integers+c%2B%2B&ia=web
3
Ranges:
#include <iostream>
#include <range/v3/all.hpp>
int main()
{
using namespace ranges;
std::cout << accumulate(istream_view<int>(std::cin)
| views::filter([](int x) { return x % 7 == 0;}), 0);
return 0;
}
https://godbolt.org/z/cqc9E17Gf
Niestety std::ranges
z C++20 na razie nie chce działać jak należy w tym wypadku.