PDA

View Full Version : информатика за 10клас



bubsi1
06-14-2011, 18:00
Моля да ми помогнете по информатика с една задача:

Да се състави програма, която въвежда от клавиатурата цяло положително четирицифрено число. Програмата да извежда сумата и произведението от цифрите на числото.
Примерен вход:1234 Примерен изход:10 24
Примерен вход:2508 Примерен изход:15 0

Моляяя Ви, помагайте ии ако някой я реши моля да обясни как го е направил.. :)

linaXX
06-14-2011, 18:03
мога да ти е реша :D ти с какво можеш да ми помогнеш :-D

bubsi1
06-14-2011, 18:43
Емии не знамм. Какво искаш? :D

linaXX
06-14-2011, 18:57
по английски добра ли си? трябва ми да напиша едно кратко съчинение?

Chacho
06-14-2011, 20:40
Моля да ми помогнете по информатика с една задача:

Да се състави програма, която въвежда от клавиатурата цяло положително четирицифрено число. Програмата да извежда сумата и произведението от цифрите на числото.
Примерен вход:1234 Примерен изход:10 24
Примерен вход:2508 Примерен изход:15 0

Моляяя Ви, помагайте ии ако някой я реши моля да обясни как го е направил.. :)

Не знам на какъв език е, ще карам на С++


#include <iostream>
using namespace std;

int main()
{
int n, s, p;
cout<<"Vuvedete chetiricifreno chislo n="; cin>>n;
while (n<1000 || n>9999)
{
cout<<"\nVuvedete chetiricifreno chislo!!";
cout<<"\nn="; cin>>n;
}

s=0; p=1;
while (n!=0)
{
s+=n%10;
p*=n%10;
n/=10;
}

cout<<"\n"<<s<<" "<<p;

std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
std::cin.get();

return 0;
}



Идеята е следната:

Въвеждаме число n.

След това проверяваме дали числото е между 1000 и 9999 (положително четирицифрено). Ако не е, питаме за повторно въвеждане, докато не се въведе такова. Това го постигаме чрез първия while.

Нулираме сумата и произведението (s=0 първоначално, а р=1 първоначално, защото ако беше 0, винаги щеше да си остава нула, по каквото и да го умножим). След това ще вадим цифрите и на всяка стъпка ще прибавяме извадената в сумата и ще умножаваме с нея произведението. Така докато не свършат цифрите.

Как вадим цифри? Като раделим n по модул 10 (връща остатакът от деление на 10), лесно се забелязва, че ни дава последната цифра. Ето например 1394 : 10 = 139 и остатък 4. По този начин, ползвайки n%10, получаваме последната. Въпросът е, като сме я получили, как да преминем към следващата. Като разделим с целочислено деление на 10, всъщност получаваме числото без последната цифра. Защо? да проверим отново с 1394:10 = 139 и остатък 4, но целочисленото деление не запазва остатъкът и всъщност имаме 1394/10 = 139. Така n/=10 ни дава числото без последната цифра. Повтаряме тези две стъпки (запазване на остатък и премахване на цифра), докато не свършат цифрите. Тогава s и p ще са придобили търсените стойности.




std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
std::cin.get();


Тези редове просто казват на програмата да изчака да цъкнеш enter, преди да се затвори, за да можеш да видиш резултата.

bubsi1
06-15-2011, 19:40
Амии попринцип трябва на Visual Basic, това дали ще стане? Иначе мерси много! :)