Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Программирование на С++ (http://forum.oszone.net/showthread.php?t=30415)

Agent Comanche 08-01-2003 15:45 208532

Народ, выручайте, нужно решить задачку

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

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

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

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

vasketsov 08-01-2003 16:29 208533

Tanchenko AleXanDr
число делится по цифрам делением n/10 и взятием остатка n%10.

Agent Comanche 08-01-2003 21:35 208534

// vasketsov, спасибо... идею понял... щас попробую на практике :)

Roman Go 09-01-2003 17:03 208535

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

Lunich 10-01-2003 22:44 208536

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

Yagur 23-01-2003 16:27 208537

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

vasketsov 23-01-2003 17:13 208538

Yagur
а почему 5 а не 12 ?

Ork Yason 24-01-2003 09:11 208539

Roman Go
Цитата:

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

Agent Comanche 14-03-2003 22:36 208540

помогите решить еще одну задачу :)

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

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

насколько я понимаю :), нужно значение строки преобразовать в число. Это делает вроде бы функция atoi, какие параметры она использует?
Цитата:

_itoa( n, buffer, 10 );
это обратная ей. А что здесь есть 10?

Добавлено:

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

ivank 14-03-2003 23:08 208541

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 208542

OFFTOPIC

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

Agent Comanche 28-06-2003 14:31 208543

Огромная просьба, если не сложно, объясните что "делает" каждая строка:



Код:


#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 208544

где скачать С++


Время: 03:04.

Время: 03:04.
© OSzone.net 2001-