Войти

Показать полную графическую версию : Программирование на С++


Agent Comanche
08-01-2003, 15:45
Народ, выручайте, нужно решить задачку

задача такая:

Дано произвольное целое число n. Написать программу, которая разбивает число n на цифры и выводит их на экран; подсчитывает сколько цифр в числе n; находит сумму цифр числа n; меняет порядок цифр числа n на обратный.

... может есть какие-нибудь идеи как решить...

Буду благодарен :pray: :)

vasketsov
08-01-2003, 16:29
Tanchenko AleXanDr
число делится по цифрам делением n/10 и взятием остатка n%10.

Agent Comanche
08-01-2003, 21:35
// vasketsov, спасибо... идею понял... щас попробую на практике :)

Roman Go
09-01-2003, 17:03
незнаю как на си, а на Паскале можно было бы перевести число в строку, а строка это массив, сколько в нем элементов определяется одной процедуркой, сложить по цифиркам это  тоже просто, каждый символ в тип интежер и суммируй себе в какой-нибудь переменной, вывести задом наперед, так не с головы строки идти, а с последнего элемента...
ну в Паскале то точно можно так сделать

Lunich
10-01-2003, 22:44
На С можно преобразовать целое в строку:
//
char buffer[20]
_itoa( n, buffer, 10 );
//
а потом для каждого элемента полученной строки, отняв от него 0х30 получить его значение в int. Кол-во чисел:
//
slren( buffer );
//

Yagur
23-01-2003, 16:27
Я преобразую число(iKod) в строку(c) так:
   char c[5];
   sprintf(c, "%d", iKod);

vasketsov
23-01-2003, 17:13
Yagur
а почему 5 а не 12 ?

Ork Yason
24-01-2003, 09:11
Roman Go
незнаю как на си, а на Паскале можно было бы перевести число в строку, а строка это массив, сколько в нем элементов определяется одной процедуркой, сложить по цифиркам это  тоже просто, каждый символ в тип интежер и суммируй себе в какой-нибудь переменной, вывести задом наперед, так не с головы строки идти, а с последнего элемента...
конечно проще... но разумнее? быстрее?
сколько нужно ресурсов и процессорного времени для переводов туды сюды? что быстрее работа с текстом или числами?
я по молодости, тоже был любитель стринга... щас меня от него воротит... там все функции и процедуры такие тяжелые... уж лучше как-нить по свойски...
(это я ваще про всякие визуальные языки)

Agent Comanche
14-03-2003, 22:36
помогите решить еще одну задачу :)

Пользователь вводит с клавиатуры арифметическое выражение (используемые операции только сложение и вычитание). Посчитать его значение. Если в выражении встречаются другие символы, выдать сообщение, что выражение введено не корректно.

---------------------------------------------------------------------

насколько я понимаю :), нужно значение строки преобразовать в число. Это делает вроде бы функция atoi, какие параметры она использует?
_itoa( n, buffer, 10 );
это обратная ей. А что здесь есть 10?

Добавлено:

Ork Yason
как всегда флуд

ivank
14-03-2003, 23:08
Tanchenko AleXanDr
Если без скобок выражение, то решается всё не просто, а очень просто (на голом C):
int expression(char * expr)
{
   int result;
   char * c;
   result = 0;
   c = expr;
   if(!isdigit(*c))
   {
       printf("Ошибочка вышла: \"...%s\"\n", c);
       exit(1);
   }
   for(; isdigit(*c); ++c)
       result = result * 10 + (c - '0');
   switch(*c)
   {
       case 0:
           return result;
       case '+';
           return result + expression(c + 1);
       case '-';
           return result - expression(c + 1);
       default:
           printf("Ошибочка вышла: \"...%s\"\n", c);
           exit(1);
   }
}

А что здесь есть 10?Основание системы счисления.

kgt2003
17-06-2003, 15:30
OFFTOPIC

Исправлено: vasketsov, 21:53 17-06-2003

Agent Comanche
28-06-2003, 14:31
Огромная просьба, если не сложно, объясните что "делает" каждая строка:




#include <io.h>
#include <string.h>
#include <fstream.h>

void Find();
int FindText();
void main()
{
* *Find();
}

int FindText (char filename[],char search[])
{
* *int k=0;

* *// НАЧИНАЯ ОТСЮДА

* *fstream fst (filename,ios::in|ios:: out|ios::app);
* *fst.close();
* *fst.open(filename,ios:: out|ios::in);
* *char buf [255];
* *while (fst.good())
* *{
fst.getline(buf,255);
* * * *if(strstr(buf,search)!=NULL)
{k=1;break;}
else
{k=0;}
* *}
* *fst.close();
return k;
}

void Find()
{
char path[150],path1[70],p[70];
cout <<"\nEnter path: ";
cin>>path;
strcpy(path1,path);
strcpy(p,path1);
char mask[15];
cout <<"\nEnter mask (for example, *.*, *.txt):";
cin>>mask;
char Ssearch[255];
cout<<"\nWhat word we shall search? ";
cin>>Ssearch;
strcat(path, mask);
_finddata_t *fileinfo=new _finddata_t;
* * * * long done = _findfirst(path,fileinfo);
int MayWeWork=done,kkk;
cout<<"\nInformation was found:\n\n";
while (MayWeWork!=-1)
{strcpy(path1,p); *
kkk=FindText(strcat(path1,fileinfo->name),Ssearch);
if (kkk==1)
{
* * * *cout<<"In file "<<fileinfo->name<<"\n";
}
MayWeWork=_findnext(done, fileinfo);
}
delete fileinfo;
cout<<"\n\n";
}

Neo5443
08-07-2003, 00:21
где скачать С++




© OSzone.net 2001-2012