Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

4 задачи, С++

4 задачи, С++

Мнениеот Гост » 24 Авг 2022, 14:24

Моля, помогнете ми за четири задачи. Много ми е важно!
1зад. Колко пъти ще се изпълни следния цикъл?
for (int i=9; i<0; i--)suma=suma + i
2зад. Какви стойности имат променливите a и b след изпълнение на следния код:
float a=4, b=-8
if (a>0 or b>0)
if (a+b<0)a=a+b;
else a=a*b;
else if(b<0)b=b-a;
else (a=a-b; b=a+b;
}
3зад. Какво ще изведе на екрана следния код?
int x=12;
if(x>12){
if(x<15)cout<<"blue";
} else cout<<"green";
cout<<"jeans";
4зад. Какво ще се изведе на екрана след
for( int i=4; i<6; i++) cout<<i<<"\t"
Гост
 

Re: 4 задачи, С++

Мнениеот peyo » 24 Авг 2022, 15:38

Как може това да ти е важно? Такъв вид задачи имат смисъл само когато човек не може да ползва компютър, например на интервю за работа. Когато си в къщи е безмислено да рашаваш такива задачи или още повече да искаш някой да ти ги реши. Щом ти е важно пусни си компилатора пейстни кода и виж какви са резултатите.
peyo
Математик
 
Мнения: 1768
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 664

Re: 4 задачи, С++

Мнениеот ammornil » 24 Авг 2022, 22:49

Моля, помогнете ми за четири задачи. Много ми е важно!
1зад. Колко пъти ще се изпълни следния цикъл?
for (int i=9; i<0; i--)suma=suma + i

10 пъти

2зад. Какви стойности имат променливите a и b след изпълнение на следния код:
float a=4, b=-8
if (a>0 or b>0)
if (a+b<0)
a=a+b; /a=-4, b=-8

else
a=a*b;
else
if(b<0)
b=b-a; /a=-4, b=-4

else
(a=a-b; b=a+b;
}

a=-4, b=-4


3зад. Какво ще изведе на екрана следния код?
int x=12;
if(x>12){
if(x<15)cout<<"blue";
}
else cout<<"green";
cout<<"jeans";

green jeans

4зад. Какво ще се изведе на екрана след
for( int i=4; i<6; i++) cout<<i<<"\t"

[tex]4 \phantom{QQQQQQ} 5[/tex]
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3767
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1779

Re: 4 задачи, С++

Мнениеот Гост » 25 Дек 2024, 18:03

Всъщност тялото на цикъла от първата задача for (int i=9; i<0; i--) suma = suma + i; няма да се изпълни нито веднъж.

Да видим какво се случва при изпълнение на цикъла:

Първо, целочислената променлива $i$ приема стойност 9.
Второ, проверява се дали е изпълнено условието $i<0$ - понеже 9 не е по-малко от 0, тялото на цикъла $suma = suma + i;$ не се изпълнява.
Трето, изпълнението на програмата продължава със следващия след $for$ оператор.

Понеже променливата $i$ се декларира като целочислена (това става, като пред нея пишем $int$) и й присвояваме стойност 9 във вътрешността на оператора $for$, то при преминаване към следващия след $for$ оператор компилаторът вече ще е "забравил" какво е $'i'$, а $suma$ ще има стойност, каквато е имала преди оператора $for$.
Гост
 

Re: 4 задачи, С++

Мнениеот ammornil » 25 Дек 2024, 18:22

Правилно сте забелязали, че цикълът няма да се изпълни нито веднъж, защото контролното условие не е изпълнено за началната стойност на броячната величина.

Твърдението Ви за сумата не е вярно. Ако вместо даденото имахме:
Код: Избери целия код
#include <iostream>
using namespace std;

int main() {
int suma = 0;
for (int i=9; i>0; --i) {
    suma = suma + 1;
}
cout << suma;
}

}
отговорът ще е 9.
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3767
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1779

Re: 4 задачи, С++

Мнениеот Гост » 25 Дек 2024, 20:05

ammornil написа:Правилно сте забелязали, че цикълът няма да се изпълни нито веднъж, защото контролното условие не е изпълнено за началната стойност на броячната величина.

Твърдението Ви за сумата не е вярно. Ако вместо даденото имахме:
#include <iostream>
using namespace std;

int main() {
int suma = 0;
for (int i=9; i>0; --i) {
suma = suma + 1;
}
cout << suma;
}
отговорът ще е 9.


Ама Вие сте обърнали знака и затова се получава 9.

Ако беше както в оригиналното условие на задачата:

#include <iostream>
using namespace std;

int main() {
int suma = 0;
for (int i=9; i<0; --i) {
suma = suma + 1;
}
cout << suma;
}

$suma$ щеше да остане със стойност 0.
Гост
 

Re: 4 задачи, С++

Мнениеот ammornil » 25 Дек 2024, 23:29

Не сте ми прочели отговора. Казах, че за оригиналното задание сте прав. Сумата ще е нула защото цикълът няма да се завърти.
Ако променим знака на ограничението в цикъла, ще е друга работа.
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3767
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1779


Назад към C, C++



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)