Форум программистов, компьютерный форум CyberForum.ru

Конвертация числа в строку и обратно, условие исключения, разность. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Строка http://www.cyberforum.ru/cpp-beginners/thread190095.html
Столкнулся с проблемой: заменить все латинские буквы на *. как же задать в ифе (если итый элемент есть в буквах-исключениях) s='*'; как это сделать, кроме s=A || s=B || s=C......
C++ Почему на экран выводится цифры в формате с E (4.34e)? Добрый день! Есть следующая функция #include <iostream> using namespace std; double* test(char *A){ char ch_year ; char ch_month ; http://www.cyberforum.ru/cpp-beginners/thread190092.html
Как создать динамический массив размерностью m на n? C++
подскажите, а то я только n на n создавать умею)
не могу сделать лабораторки по инфе на языке C++ C++
помогите не получаются лабы по инфе!!! Посмотрите кто может помочь я 8 вариант! просто сроки поджимают а надо сдать 7 лабораторок по инфе!!! студент 1 курса Прикрепляйте файлы к сообщениям.
C++ Лабораторная работа по С++.Не поняла циклы http://www.cyberforum.ru/cpp-beginners/thread190066.html
дана последовательность n из вещественных чисел. Определить, образуют ли они возрастающую последовательность?
C++ Перевод числа из 10 с.с. в 8 с.с. не пойму как создать программу по переводу числа из 10 с.с. в 8 с.с. . Дали несколько задач на расчётно-графическую работу,а учитель толком не объясняет,хотя дата сдачи - через неделю. подробнее

Показать сообщение отдельно
4ance
1 / 1 / 0
Регистрация: 02.11.2010
Сообщений: 78
12.11.2010, 18:07     Конвертация числа в строку и обратно, условие исключения, разность.
Здравствуйте! Проблема с задачей:

В четырёхзначном числе все цифры разные и отличны от нуля. если его записать в обратном порядке,
то получится число, на k меньшее первоначального. Найти это число.
Ввод с клавиатуры - разность k.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "stdafx.h"
#include <conio.h>
#include <locale.h>
#include <stdlib.h> 
#include <iostream>
#include <string>
#include <cstring> 
 
int n1 = 1000, // Начальное значения большего числа 
     n2 = 1000, // Начальное значение меньшего числа
     k;         // Разность - вводимая
     char s[32];    // Массив для конвертация числа в строку
 
 /* itoa:  конвертируем m число символы в s */
 
void itoa(int m, char s[])
 {
     int i = 0;
 
     do {       /* генерируем цифры в обратном порядке */
         s[i++] = m % 10 + '0' ;   /* берем следующую цифру */
     } while ((m /= 10) > 0);     /* удаляем */
     
     s[i] = '\0';
 }
 
int _tmain(int argc, _TCHAR* argv[])
{
  setlocale(LC_ALL, "russian" );  
 
  // Вывод информации о программе
 
  printf("Введите разность между четырёхзначными натуральными числами k\n");
  scanf("%d",&k);
 
  // Решение
 
  for ( int o = 0; n2 < 9999; o++) { // пошаговая инкрементация до конца 4х значных чисел
        if ( n2 / 1000 == 0 || n2 % 1000 / 100 == 0 || n2 % 100 / 10 == 0 || n2 % 10 == 0 ) { // Цифры ненулевые
        n2++;
        }
        else {
            if ( n2 / 1000 != n2 % 1000 / 100 && n2 / 1000 != n2 % 100 / 10 && n2 / 1000 != n2 % 10 && n2 % 1000 / 100 != n2 % 100 / 10 && n2 % 1000 / 100 != n2 % 10 && n2 % 100 / 10 != n2 % 10) { // Цифры различные
                printf("\n\nЧисло n2, прошедшее валидацию = %d\n", n2);
                n1=n2;
                itoa(n1, s); //Перевод в строку с одновременным перевертыванием     
                printf( "atoi выполнена, возвращаемое число = %d", atoi(s)); // Здесь - одна из проблем - переводит строку s в int но сколько я не пытался дальнейшие цифровые операции производить с этим значением не могу
            }
            else {
                n2++;
            }
        }
        n2 = k + n1;  // Здесь вторая и основная проблема - не знаю куда можно
        n1++;         // прицепить зависимость от разности k
  }
 
  // Вывод результата
 
  printf("\n\nНажмите любую клавишу\n");
  _getch();
  return 0;
}
Не сделал только одно - связать основной цикл с разностью k, кроме того не понимаю, почему функция atoi не дает мне производить дальнейшие действия с целыми числами. И самая ли она удобная для операции конвертации?
Поэтому две строчки
C++
1
2
n2 = k + n1;  
n1++;
- не верны

Собственно основной вопрос - куда правильно прицепить разность k? Заранее, спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru