C++ - left operand must be modifiable l-value
Tak jsem tady zas :D Tentokrát jsem zkoušel různé operace s polem a v jedné části mi to náhle začlo hlásit v nadpisu uvedený error (u podmínek a[i] ve funkci 6-sudá a lichá). Tušíte, co s tím?
#include<iostream>
using namespace std;
//1
int a[10]={5,7,8,6,20,100,12,13,4,90};
//2
int nejvetsi(){
int nej = a[0];
for(int i = 0; i < 10; ++i){
if(a[i] > nej){
nej = a[i];
}
}
return nej;
}
//3
int index_nej(){
int index = 0;
int nej = a[0];
for(int i = 0; i < 10; ++i){
if(a[i] > nej){
nej = a[i];
index = i;
}
}
return index;
}
//4
int cislo;
int index_zadaneho_cisla(int cislo){
int i = 0;
int index;
do{
if(a[i] == cislo){
index = i;
}
++i;
}while(i < 10);
return index;
}
//5
int soucet_minimalnich_hodnot(){
int nejmensi = a[0];
int nejmensi2 = a[1];
for(int i = 0; i < 10; ++i){
if(a[i] < nejmensi){
nejmensi = a[i];
a[i] = a[0];
a[0] = nejmensi;
for(int j = 1; j < 10; ++j){
if(a[j] < nejmensi2){
nejmensi2 = a[j];
}
}
}
}
return nejmensi + nejmensi2;
}
//6
void suda_a_licha(){
cout << "Licha: ";
for(int i = 0; i < 10; ++i){
if(a[i] % 2 = 1){
cout << a[i] << " ";
}
}
cout << endl;
cout << "Suda: ";
for(int i = 0; i < 10; ++i){
if(a[i] % 2 = 0){
cout << a[i] << " ";
}
}
cout << endl;
}
int main(){
cout << nejvetsi() << " " << index_nej() << endl;
cout << "Zadej cislo, vratim index: ";
cin >> cislo;
cout << index_zadaneho_cisla(cislo) << endl;
cout << soucet_minimalnich_hodnot() << endl;
return 0;
}
Moc díky
Uvědom si rozdíl mezi = a ==.
Operátor pre priradenie ("=") očakáva na ľavej strane hodnotu, do ktorej môže priradiť nejaký výsledok. Ty si napísal príkaz, ktorý má hodnote "a[i] % 2" priradiť hodnotu "1". Zrejme si chcel použiť operátor pre porovnanie ("==").
Nižšie máš ďalšie syntaktické chyby.
Nabudúce sem nedávaj celý program, ale iba tú časť, ktorá má s problémom niečo spoločné. Možno potom prídeš aj sám na to, v čom je problém.
Moc díky