Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Visual C++ Цифры в другом порядке


Автор: Ангельская пыль 11.10.2005, 11:11
1)Вводиться трёхзначное число.......как его вывести наоборот....например 123....321
2) Вводиться целое число m.....вывести n равное последней цифре m
помогите....

Автор: nikitao 11.10.2005, 12:34
Ангельская пыль
ТЫ под консоль пишеш?(еслм да ,надо было в C++ общие вопросы). smile
Если самый простой,то вот решениеsmileпод консоль):
Код

#include<iostream>
using namespace std;
int main()
{
  int i,j,a,b,c;
  cout<<"Введите трехзначное число: ";
  cin>>i;
   if ((i>999)||(i<100))
   {
     cerr<<"Надо было ввести трехзначное число";
     system("PAUSE");
     exit(-1);
   }
   a=i%10;
   i/=10;
   b=i%10;
   i/=10;
   c=i;
   j=a*100+b*10+c;
   cout<<"В обратном порядке: "<<j;
   system("PAUSE");
   return 0;
}


Насчет второго пункта,там все еще легче,разберешься в 1 второй просто делается smile

Автор: Guest 11.10.2005, 12:46

Вот первая:
код:
#include <stdio.h>

void main()
{
int a, b;
scanf("%d", &a);

b = 0;
while (a!=0)
{
b = b*10 + a%10;
a /= 10;
}
printf("Vice-versa: %d\n", b);
}
Вот вторая:
код:
#include <stdio.h>

void main()
{
int m, n;
scanf("%d", &m);
n = m%10;
printf("Last digit: %d\n", n);
}

у меня так получилось

Автор: Nastya 11.10.2005, 18:24
smile))))
itoa + strrev
шучу-шучу smile

Автор: Mayk 11.10.2005, 19:09
Математики млин.
Первая задача решается проще.(Почти как сказала Nastya)

А именно что-то около того:
Код

int main(){
  char a,b,c;
  scanf("%c%c%c",&a,&b,&c);
  
  //strrev - 1 задача
  printf("%c%c%c",c,b,a);
}



smile
Добавлено @ 19:11
Цитата(nikitao @ 11.10.2005, 16:34)
system("PAUSE");

НИКОГДА так не делай

Автор: Guest 11.10.2005, 19:15
А у меня прально решены?

Автор: Mayk 11.10.2005, 19:33
ага

Автор: nikitao 11.10.2005, 19:57
Цитата
НИКОГДА так не делай

Почему?
Единственное предположение это в переносимости на другие платформы(скажем в Linux),там что не будет это работать?

Mayk ,решение не совсем хорошее,потому что ты не с числами работаешь,а с знаками(ИМХО) это не очень хорошо,вообще если на чистоту делать,то надо сначало считывать сторку,потом проверять длину(чтоб трехзначное было)(если нет то исключене),потом проверять число ли это(если нет исключительную ситуацию),а уж потом как-нибудь переворачивать.
В твоем решении прога очень плохо реагирует на "критические случаи". smile

Автор: Mayk 11.10.2005, 20:11
Цитата(nikitao @ 11.10.2005, 23:57)
Почему?
Единственное предположение это в переносимости на другие платформы(скажем в Linux),там что не будет это работать?

Во-первых да.
Во-вторых существует МОРЕ аналогов:
1) getch,
2) fgetc,
3) gets,
4) scanf
5) kbhit
6) getch

В-третьих он тормозной. (посравнивай system("cls") и какой нить человеческий способ очистки экрана)


Цитата(nikitao @ 11.10.2005, 23:57)
Mayk ,решение не совсем хорошее,потому что ты не с числами работаешь,а с знаками(ИМХО) это не очень хорошо,вообще если на чистоту делать,то надо сначало считывать сторку,потом проверять длину(чтоб трехзначное было)(если нет то исключене),потом проверять число ли это(если нет исключительную ситуацию),а уж потом как-нибудь переворачивать.
В твоем решении прога очень плохо реагирует на "критические случаи".

1) В конце смайлик был smile
2) Все эти проверки можно провесть банальным strspn'ом даже. ((strspn(buf, "0123456789")==3) && (buf[3]==0))
Можно кроме strspn'а юзать другие ф-ции.

Автор: nikitao 11.10.2005, 20:42
Цитата
Во-вторых существует МОРЕ аналогов:
1) getch,
2) fgetc,
3) gets,
4) scanf
5) kbhit
6) getch

Естественно существует,я просто так привык из-за Dev-C++.C него начинал,а там при создании сpp файла сразу этот код добавляется в конец main(). smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)