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

Напишите программу, которая находит следующее и предыдущее число для заданного N - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны целые числа K и N (N > 0). Вывести N раз число K http://www.cyberforum.ru/cpp-beginners/thread965696.html
Даны целые числа K и N (N > 0). Вывести N раз число K...
C++ Во время отладки выбивает ошибку C++ Здравствуйте, помогите пожалуйста решить проблему. Собственно самое задание звучит так: Вычислить и вывести на экран в виде таблицы значения функции F на интервале от XНАЧ до XКОН с шагом dX. где a,b,c - действительные числа. Функция F должна принимать действительное значение, если выражение (Ац ИЛИ Вц) И (Ац ИЛИ Сц) не равно 0, и целое значение в противном случае. Через Ац, Вц, и Сц... http://www.cyberforum.ru/cpp-beginners/thread965673.html
возврат C++
пример: функция была выполнена с ошибкой, как сделать возврат на предыдущее функцию?
Вывод данных из текстового фаила C++
Прога работает, да не совсем. Почему-то не передает из фаила описание деталей. Прошу помочь разобраться. #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <iostream> #include <fstream> #include <string.h> #include <iomanip>
C++ Дан массив А(12). Каждый третий элемент массива заменить суммой двух предшествующих. http://www.cyberforum.ru/cpp-beginners/thread965633.html
1)Дан массив А(12). Каждый третий элемент массива заменить суммой двух предшествующих. Нужно написать в С++ , но не понимаю как делать. слезно прошу о помощи :) Хотяб одну-две задачки бы объяснить =(
C++ Задачка. Unsigned char. Двоичные числа Сложить 2 числовых значения в двоичном представлении с выводом промежуточных результатов при использовании типа unsigned char. Помогите пожалуйста. 1 курс. Без циклов, линейно всё. Заранее спасибо. подробнее

Показать сообщение отдельно
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
30.09.2013, 21:55     Напишите программу, которая находит следующее и предыдущее число для заданного N
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
#include<stdio.h>
#include <iostream.h>
 
int main(int argc, char *argv[])
{
    char Big_N[31]; //наше число максимум знаков плюс возможный символ конца строки
    char tmp[31]; //второе результирующее число после операции
    cout<<"Vvedite N"<<endl; 
    cin>>Big_N; //вводим большое число строкой не числом
    short len=strlen(Big_N); //определяем количество цифр в числе
    if (len>30) //если число цифр превышает допустимое ссно не удовлетворяет условию
    {
               cout<<"Chislo slishkom bolshoe"<<endl;
               system("pause");
               return (0);
    }
    memcpy(tmp,Big_N,len+1); //копируем все данные из введенного числа в результирующее
    short tlen=len-1; //определяем индекс младшей цифры числа
    tmp[tlen]--; //вычетаем 1 у младшей цифры
    while ((tlen>0)&&(tmp[tlen]<'0')) //до тех пор, пока анализируемая цифра вне диапазона (0 - 9), 
//т.е. пока нам необходимо осуществлять заем у старшей цифры
    {
          tmp[tlen--]='9'; //прописываем в текущую цифру 9 и сразу изменяем индекс анализируемый цифры на более старшую (левее)
          tmp[tlen]--; //уменьшаем ее, т.к. мы осуществили из нее заем
    }
    cout <<"predidushee chislo - "; //выводим число на экран. 
    if (tmp[0]<'0') cout<<"-1"<<endl;  //правда проверим одну внештатную ситуацию когда первоначально число было нулем и заем осуществлять было невозможно тогда выводим -1
    else 
    {
         if (tmp[0]='0') tmp[0]=' '; //иначе удаляем возможный 0 перед числом дабы избежать вывода например 09 вместо 9
         cout<<tmp<<endl;
    }
//подготавливаемся для увеличения
    memcpy(tmp,Big_N,len+1);//копируем
    tlen=len-1;//получаем индекс
    tmp[tlen]++;//увеличиваем младшую цифру
    while ((tlen>0)&&(tmp[tlen]>'9'))//и аналогично пролому анализируем последующие цифры тут думаю можно додуматься что и как
    {
          tmp[tlen--]='0';
          tmp[tlen]++;
    }
    cout <<"sleduushee chislo - ";
    if (tmp[0]>'9') //а вот тут проверяем внештатную ситуацию когда  число состояло из 9, тогда у нас получается не куда воткнуть старшую единицу и мы ее выводим искусственно
    {
                   tmp[0]='0';
                   cout<<"1";
    }
    cout<<tmp<<endl;
    cout<<"gotovo"<<endl;
    system("pause");
 
}
Все комментарии не писал, чтобы можно было подумать и вникнуть
Более того нигде нет проверок на то что пользователь укажет именно число а не произвольную строку.
Так же не отбрасываются впередистоящие нули которые увеличивают длину строки, но никак не повышают разрядность числа.
Ну и понятное дело это неправильно работает с отрицательными числами
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru