[ shakall @ 01.01.2016. 23:08 ] @
| Učitati članove niza. Sabirati članove niza sve dok je suma manja od 241.
Code: #include <iostream>
using namespace std;
int main(){
int n;
cout<<"Dimenzija niza je:"<<endl;
cout<<"n= ";
cin>>n;
int a[n];
//Unos niza
for(int i=0;i<n;i++){
cin>>a[i];
}
//Racunanje sume
int sum=0;
while(sum<241){
for(int i=0;i<n;i++) sum+=a[i];
}
//Ispis rezultata
cout<<"suma= "<<sum;
cin.sync();
cin.ignore();
return 0;
}
Zasto mi sumira sve elemnte niza a ne prestane sa sumiranjem kad suma premasi vrijednost 241?
[Ovu poruku je menjao Mihajlo Cvetanović dana 02.01.2016. u 04:40 GMT+1] |
[ Mihajlo Cvetanović @ 02.01.2016. 03:45 ] @
Imaš dvostruku petlju, while, a unutar while imaš for. Ono što se dešava je da program uđe u prvi krug while petlje, a tu se izvrti cela for petlja od 0 do n, pa ako je na ulazu u drugi krug while petlje sum >= 241 onda izađe iz petlje, a ako je manje onda ponavlja postupak.
Ono što treba da imaš je samo jedna for petlja, ali da uslov za nastavak rada u petlji bude kombinacija, i < n && sum < 241, umesto samo i < n.
[ shakall @ 02.01.2016. 10:04 ] @
Probao sam i to ali opet ne izbacuje kako treba. Uglavno, rijesio sam ga na ovaj nacin.
Code:
#include <iostream>
using namespace std;
int main(){
int n;
cout<<"Dimenzija niza je:"<<endl;
cout<<"n= ";
cin>>n;
int a[n];
//Unos niza
for(int i=0;i<n;i++){
cin>>a[i];
}
//Racunanje sume
int sum=0;int i=0;
do{
sum+=a[i];
i++;
}while(i<n && sum+a[i]<=241);
//Ispis rezultata
cout<<"suma= "<<sum;
cin.sync();
cin.ignore();
return 0;
}
[Ovu poruku je menjao Mihajlo Cvetanović dana 03.01.2016. u 14:37 GMT+1]
[ shakall @ 02.01.2016. 10:12 ] @
Moze i sa for petljom ipak ali da uslov bude i<n && sum+a[i ]<241
[Ovu poruku je menjao Mihajlo Cvetanović dana 03.01.2016. u 14:37 GMT+1]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.