Въведете число х (х<=1000) и след това изведете същото число, представено на естествен език. Например при въведено 7, програмата трябва да изведе „седем“; при въведено 243, програмата трябва да изведе „двеста четиридесет и три“.
i ako moje da q reshite sus SWITCH =]
Задача по информатика С++
Правила на форума
Натисни тук за да прочетеш Правилата на форума
Натисни тук за да прочетеш Правилата на форума
- scuba
- R.I.P. Holy Diver
- Мнения: 6971
- Регистриран на: Вто 19 окт 2004 12:04
- Автомобил:
- Двигател:
- Местоположение: София
- Контакти:
Задача по информатика С++
Момции. детето нещо го е закъсало по информатика. Помагайте
Последна промяна от scuba на Нед 17 фев 2013 16:18, променено общо 1 път.
- Adnan
- Мнения: 3536
- Регистриран на: Чет 08 фев 2007 14:36
- Автомобил:
- Двигател:
- Местоположение: София
- Контакти:
Re: Задача по информатика
Не знам на какъв език го искат това но ето ти ещо което съм писал на SQL Server, може да си го преведе на какъвто си иска език.
Ако детето има въпроси питай.
Ако детето има въпроси питай.
Код: Избери всички
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[translate] (@n nvarchar(15))
RETURNS nvarchar (255)
AS
BEGIN
declare @o nvarchar(255)
declare @dh nvarchar(50)
declare @h nvarchar(50)
declare @s nvarchar(50)
declare @d nvarchar(50)
declare @e nvarchar(2)
declare @v nvarchar(50)
declare @c nvarchar(50)
IF dbo.instring(@n,'.')=0
begin
set @v=@n
set @e='0'
end
IF dbo.instring(@n,'.')<>0
begin
set @v=dbo.trim(substring(@n,1,dbo.instring(@n,'.')-1))
set @e=left(substring(@n,dbo.instring(@n,'.')+1,len(@n)),2)
end
IF len(@v)> 5 set @o= ' NOT DEFINED!'
IF len(@v)= 5
begin
--- desoto hilqdnite
if left(@v,2)<20 set @dh= (select dbo.translate_sub2 (Left( @v, 2), 1)) + 'хиляди'
if left(@v,2)>=20 set @dh= (select dbo.translate_sub2 (Left( @v, 2), 1))+(select dbo.translate_sub3 (SubString(@v,2,1),1)) + 'хиляди'
--- stoticite
if SubString(@v,3,1)=1 set @s= 'сто'
if SubString(@v,3,1) between 2 and 3 set @s=(select dbo.translate_sub1(SubString(@v,3,1), 1))+ 'стa'
if SubString(@v,3,1)>3 set @s= (select dbo.translate_sub1(SubString(@v,3,1), 1))+'стотин'
---deseticite
if substring(@v,4,1)=0 set @d= (select dbo.translate_sub2 (right(@v,2),2))+(select dbo.translate_sub3 (right(@v,1), 1))
if substring(@v,4,1)=1 set @d=(select dbo.translate_sub2 (right(@v,2), 2) )
if substring(@v,4,1)>1 set @d=' '+(select dbo.translate_sub2 (right(@v,2), 1) )+(select dbo.translate_sub3 (right(@v,1), 1))
set @o=@dh+' '+ISnull( @s, '' )+@d +' лв.'
end
IF len(@v)= 4
begin
--- hilqdnite
if left(@v,1)=1 set @h= 'хиляда'
if left(@v,1)>=2 set @h= (select dbo.translate_sub1(left(@v,1), 1))+'хиляди'
--- stoticite
if SubString(@v,2,1)=1 set @s= 'сто'
if SubString(@v,2,1) between 2 and 3 set @s=(select dbo.translate_sub1(SubString(@v,2,1), 1))+ 'стa'
if SubString(@v,2,1)>3 set @s= (select dbo.translate_sub1(SubString(@v,2,1), 1))+'стотин'
---deseticite
if substring(@v,3,1)=0 set @d= (select dbo.translate_sub2 (right(@v,2),2))+(select dbo.translate_sub3 (right(@v,1), 1))
if substring(@v,3,1)=1 set @d=(select dbo.translate_sub2 (right(@v,2), 2) )
if substring(@v,3,1)>1 set @d=' '+(select dbo.translate_sub2 (right(@v,2), 1) )+(select dbo.translate_sub3 (right(@v,1), 1))
set @o=@h+' ' +@s+@d +' лв.'
end
IF len(@v)= 3
begin
--- stoticite
if left(@v,1)=1 set @s= 'сто'
if left(@v,1) between 2 and 3 set @s=(select dbo.translate_sub1(left(@v,1), 1))+ 'стa'
if left(@v,1)>3 set @s= (select dbo.translate_sub1(left(@v,1), 1))+'стотин'
---deseticite
if substring(@v,2,1)=0 set @d= (select dbo.translate_sub2 (right(@v,2),2))+(select dbo.translate_sub3 (right(@v,1), 1))
if substring(@v,2,1)=1 set @d=(select dbo.translate_sub2 (right(@v,2), 2) )
if substring(@v,2,1)>1 set @d=' '+(select dbo.translate_sub2 (right(@v,2), 1) )+(select dbo.translate_sub3 (right(@v,1), 1))
set @o=@s+@d +' лв.'
end
IF len(@v)=2
begin
---deseticite
if left(@v,1)=1 set @d= (select dbo.translate_sub2 (@v, 1))
if left(@v,1)>1 set @d= (select dbo.translate_sub2 (@v, 1))+(select dbo.translate_sub3 (right(@v,1),1))
set @o=@d +' лв.'
end
IF len(@v)=1
begin
---deseticite
if @v='0' set @d= 'нула'
if @v<>'0' set @d= (select dbo.translate_sub1 (@v,2))
set @o=@d +' лв.'
end
------------ edinicite
IF @e not like '00'
begin
if left(@e,1)=0 set @c= (select dbo.translate_sub3 (right(@e,1),2))
if left(@e,1)=1 set @c= (select dbo.translate_sub2 (@e,2))
if left(@e,1)>1 set @c= (select dbo.translate_sub2 (@e,2))+(select dbo.translate_sub3 (right(@e,1),2))
set @o=@o + @c+' ст.'
end
return @o
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
- apa6o
- Мнения: 1101
- Регистриран на: Пон 27 ное 2006 9:56
- Автомобил: Skoda Octavia 1Z
- Двигател: BKD
- Местоположение: Перник
Re: Задача по информатика
Същото нещо, написано на C++, при нужда го имам и на Java, но в значително по-лош вид 
Преди обаче да се ползва в готов вид е хубаво да се помисли кое как работи и защо, защото никак не е здравословно да мамим образователната система по такъв начин, затова дописах и купчината коментари
А детето да не ходи на курс Телерик, че скоро и там им бяха дали това за домашна
Също така детето ако има нужда от допълнителна помощ, пиши ми на ЛъСъ, в момента водя упражнения на C++ в Софийски университет и с радост бих се опитал да помогна, подчертавам БЕЗПЛАТНО

Преди обаче да се ползва в готов вид е хубаво да се помисли кое как работи и защо, защото никак не е здравословно да мамим образователната система по такъв начин, затова дописах и купчината коментари

А детето да не ходи на курс Телерик, че скоро и там им бяха дали това за домашна

Също така детето ако има нужда от допълнителна помощ, пиши ми на ЛъСъ, в момента водя упражнения на C++ в Софийски университет и с радост бих се опитал да помогна, подчертавам БЕЗПЛАТНО

Код: Избери всички
#include<iostream>
using namespace std;
int main()
{
bool flagArr[3]={true, true, true};
//pomoshten masiv ot bulev tip, chrez koito
//da sledim kakvo sme izveli, predvaritelno
//inicializirame sas stoinosti true!
int x, helpArr[4]={0, 0, 0, 0}, n=3;
//pomoshten masiv v koito da zapishem hilqdite,
//deseticite, stoticite i edinicite na x, kakto
//i promenliva broqch za da se dvijim iz masiva
//predvaritelno inicializirame sas stoinosti 0!
setlocale(LC_ALL,"");
//komanda s koqto da izvejda tekst na kirilica
//ako kompa na koito se pusne ima nastroiki za
//darjava BG
do{
cout<<"Въведете х :";
cin>>x;
if(!cin)
{
cerr<<"Тук нещо се обърка!"<<endl;
system("pause");
exit(1);
}
}while(x<0||x>1000);
//vavejdane na x s proverka za korekten vhod
while(x>0)
{
helpArr[n]=x%10;
x=x/10;
n--;
}
//zapalvane na pomoshtniq masiv sas saotvetnite
//stoinosti
if(helpArr[0]==1)
cout<<"Хиляда";
//proverka dali ne e vavedeno 1000
else
{
switch(helpArr[1])
{
case 1:cout<<"сто ";break;
case 2:cout<<"двеста ";break;
case 3:cout<<"триста ";break;
case 4:cout<<"четиристотин ";break;
case 5:cout<<"петстотин ";break;
case 6:cout<<"шестстотин ";break;
case 7:cout<<"седемстотин ";break;
case 8:cout<<"осемстотин ";break;
case 9:cout<<"деветстотин ";break;
default:flagArr[0]=false;
}
//proverka dali imame stotici za izvejdane
//ako nqmame, vdigame edin flag che nqma
if((flagArr[0]&&helpArr[2]==0&&helpArr[3]!=0)||
(flagArr[0]&&helpArr[2]!=0&&helpArr[3]==0)||
(flagArr[0]&&helpArr[2]==1))
cout<<"и ";
//proverka dali imame nujda ot bukvichkata i nqkade
//sluchaite sa <cifra>0<cifra>, <cifra><cifra>0 ili
//<cifra>1<cifra>
switch(helpArr[2])
{
case 1:flagArr[1]=flagArr[2]=false;
//vdigame narochno flagove che nqma desetici i edinici
//za da si spestim ostanalite izvejdaniq
switch(helpArr[3])
{
case 0:cout<<"десет";break;
case 1:cout<<"единадесет";break;
case 2:cout<<"дванадесет";break;
case 3:cout<<"тринадесет";break;
case 4:cout<<"четиринадесет";break;
case 5:cout<<"петнадесет";break;
case 6:cout<<"шестнадесет";break;
case 7:cout<<"седемнадесет";break;
case 8:cout<<"осемнадесет";break;
case 9:cout<<"деветнадесет";break;
}break;
//tuk se opravqme ako imam chislo mejdu 10 i 19
case 2:cout<<"двадесет ";break;
case 3:cout<<"тридесет ";break;
case 4:cout<<"четиридесет ";break;
case 5:cout<<"петдесет ";break;
case 6:cout<<"шестдесет ";break;
case 7:cout<<"седемдесет ";break;
case 8:cout<<"осемдесет ";break;
case 9:cout<<"деветдесет ";break;
default:flagArr[1]=false;
//vdigame flag, che e nqmalo destici za izvejdane
}
//proverka dali imame desetici za izvejdane
if(flagArr[1]&&helpArr[3]!=0)
cout<<"и ";
//oshte edna proverka dali 6te ni trqbva bukvichkata i
if(flagArr[2])
//proverqvame dali ne sme izveli chislo mejdu 10 i 19 na
//na prednata stapka
switch(helpArr[3])
{
case 0:if(!flagArr[0]&&!flagArr[1])cout<<"нула";break;
//proverqvame dali chisloto ne e nula
case 1:cout<<"едно";break;
case 2:cout<<"две";break;
case 3:cout<<"три";break;
case 4:cout<<"четири";break;
case 5:cout<<"пет";break;
case 6:cout<<"шест";break;
case 7:cout<<"седем";break;
case 8:cout<<"осем";break;
case 9:cout<<"девет";break;
}
//proverka i izvejdane na edinicite
}
cin.sync();
cin.get();
//kod chrez koito zamrazvame ekrana za malko
return 0;
}
- scuba
- R.I.P. Holy Diver
- Мнения: 6971
- Регистриран на: Вто 19 окт 2004 12:04
- Автомобил:
- Двигател:
- Местоположение: София
- Контакти:
Re: Задача по информатика
НОВА задача :-( С++
Едно цяло положително число се нарича съвършено, ако е равно на сумата от своите делители (като в списъка на делителите тук не включваме самото число). Например 28 е съвършено, защото 28=1+2+4+7+14. Напишете функция, която определя дали едно число е съвършено. Напишете програма, която отпечатва първите няколко съвършени числа. Кое е следващото съвършено число след 28?
- apa6o
- Мнения: 1101
- Регистриран на: Пон 27 ное 2006 9:56
- Автомобил: Skoda Octavia 1Z
- Двигател: BKD
- Местоположение: Перник
Re: Задача по информатика С++
Код: Избери всички
#include<iostream>
#include<limits>
using namespace std;
bool isPerfect(int a)
{
int sum=0;
for(int i=1;(2*i)<=a&&!(sum>a);i++)
if(a%i==0)
sum+=i;
return sum==a;
}
void findNextNPerfectsAfter(int n, int a)
{
for(int i=a+1, j=0;j<n&&i<std::numeric_limits<int>::max();i++)
if(isPerfect(i))
{
cout<<"Perfect number: "<<i<<endl;
j++;
}
}
void main()
{
findNextNPerfectsAfter(4,0);
findNextNPerfectsAfter(1, 28);
cin.sync();
cin.get();
}
И вземи кажи поне едно благодаря на мен и Adnan за труда

- scuba
- R.I.P. Holy Diver
- Мнения: 6971
- Регистриран на: Вто 19 окт 2004 12:04
- Автомобил:
- Двигател:
- Местоположение: София
- Контакти:
Re: Задача по информатика С++
apa6o написа:И вземи кажи поне едно благодаря на мен и Adnan за труда
Благодаря Апашо :-) Пък на Аднан ще му го кажа лично като идем да се гмуркаме
Върни се в “ОФФ-Топик - други”
Кой е на линия
Потребители, разглеждащи този форум: Няма регистрирани потребители и 38 госта