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

Из массива в цикл (задача) - C++

Восстановить пароль Регистрация
 
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
16.10.2011, 20:15     Из массива в цикл (задача) #1
Добрый день! Помогите решить задачу используя ЦИКЛ, на через массив я нашел решение. Осталось только переделать. Но у меня не выходит.
Вводится последовательность целых чисел, 0 – конец последовательности. Для каждого числа последовательности проверить, представляют ли его цифры строго убывающую последовательность,
например, 1234 (результатом функции будет 1 – Да, 0 - НЕТ).
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
#include <iostream>
using namespace std;
 
bool func(int n)
{
   char mas[20];
   itoa(n, mas, 10);
   for (int i = 1; i < strlen(mas); i++)
      if (mas[i-1] <= mas[i]) return 0;
   return 1;
}
 
int main()
{
   int n;
   cin >> n;
   while (n != 0)
   {
      cout << n;
      func(n) ? cout << " - ДА\n" : cout << " - НЕТ\n"; 
      cin >> n;
   }
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 20:15     Из массива в цикл (задача)
Посмотрите здесь:

задача на цикл C++
Задача на цикл C++
C++ [С++] Задача на цикл с предусловием
задача на цикл for C++
простая задача на цикл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
16.10.2011, 20:24     Из массива в цикл (задача) #2
Цитата Сообщение от Вася1q Посмотреть сообщение
Добрый день! Помогите решить задачу используя ЦИКЛ, на через массив я нашел решение. Осталось только переделать. Но у меня не выходит.
Вводится последовательность целых чисел, 0 – конец последовательности. Для каждого числа последовательности проверить, представляют ли его цифры строго убывающую последовательность,
например, 1234 (результатом функции будет 1 – Да, 0 - НЕТ).
С каких это пор "1234" - это строго убывающая последовательность? На мой взгляд это строго возрастающая последовательность!
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
16.10.2011, 20:28  [ТС]     Из массива в цикл (задача) #3
Сыроежка, вы правы)) но эту задачу придумывал не я))) такую уж задали)

Добавлено через 1 минуту
Наверное если ввести 1234, то результат будет 0. (Последовательность не убывающая) А вот 4321 - убывающая - следовательно результат 1)
Сыроежка
Заблокирован
16.10.2011, 20:28     Из массива в цикл (задача) #4
Цитата Сообщение от Вася1q Посмотреть сообщение
Сыроежка, вы правы)) но эту задачу придумывал не я))) такую уж задали)
Не понятно, что вы имеете в виду под "сделать через цикл"? У вас и так в вашей функции используется цикл.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
16.10.2011, 20:30     Из массива в цикл (задача) #5
надеюсь я вас правильно понял (хотя скорее всего не то что вам надо)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(){
    int a,b;
 
    cout << "enter numbers" << endl;
    cin >> a;
    while(a != 0){
        cin >> b;
        if(b<a){
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
        a = b;
    }
    system("pause");
    return 0;
}
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
16.10.2011, 20:31     Из массива в цикл (задача) #6
C
1
2
3
4
5
6
7
8
9
10
11
12
int func(int n)
{
    int d, pd = 10;
 
    do {
        d = n % 10;
        if (d >= pd)
            return 0;
        pd = d;
    } while (n /= 10);
    return 1;
}
Если нужно будет изменить порядок замените строку if (d >= pd) на if (d <= pd)
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
16.10.2011, 20:33  [ТС]     Из массива в цикл (задача) #7
Net_Wanderer, мне кажется ваша программа более подходящая чем у
greeezz, а можете мне словами описать функции которые выполняет программка?)
Сыроежка
Заблокирован
16.10.2011, 20:34     Из массива в цикл (задача) #8
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
int func(int n)
{
    int d, pd = 10;
 
    do {
        d = n % 10;
        if (d >= pd)
            return 0;
        pd = d;
    } while (n /= 10);
    return 1;
}
Биты считают справа на лево...
Мне кажется, у вас некорректный код, так как в большинстве случаев частное от деления всегда будет больше остатка.
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
16.10.2011, 20:37  [ТС]     Из массива в цикл (задача) #9
Net_Wanderer, можно пожалуйста полную программку) просто я как всегда забуду подключить какую-нибудь библиотеку))

Добавлено через 1 минуту
Сыроежка, помогите сделать корректную программку)) ведь тут уже столько много кодов)
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
16.10.2011, 20:38     Из массива в цикл (задача) #10
Цитата Сообщение от Вася1q Посмотреть сообщение
Net_Wanderer, можно пожалуйста полную программку) просто я как всегда забуду подключить какую-нибудь библиотеку))
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
#include <iostream>
using namespace std;
 
int func(int n)
{
        int d, pd = 10;
 
        do {
                d = n % 10;
                if (d >= pd)
                        return 0;
                pd = d;
        } while (n /= 10);
        return 1;
}
 
int main()
{
   int n;
   cin >> n;
   while (n != 0)
   {
      cout << n;
      func(n) ? cout << " - ДА\n" : cout << " - НЕТ\n"; 
      cin >> n;
   }
   return 0;
}
Цитата Сообщение от Сыроежка Посмотреть сообщение
Мне кажется, у вас некорректный код, так как в большинстве случаев частное от деления всегда будет больше остатка.
Разве у меня что-то сравнивается с частным?
d - новая цифра, pd - предыдущая
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
16.10.2011, 20:39     Из массива в цикл (задача) #11
если следующее число больше чем предшествующее то последовательность возрастающая и в вашем случае ответ No. если дошли до конца последовательности (в вашем случае до 0) то последовательность строго убывающая. в вашем случае YES
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main(){
    int a,b;
 
    cout << "enter numbers" << endl;
    cin >> a;
    while(a != 0){
        cin >> b;
        if(b>a){
            cout << "No" << endl;
            break;
        } 
        a = b;
    }
    if(a == 0){
        cout << "Yes" << endl;
    }
    system("pause");
    return 0;
}
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
16.10.2011, 21:00  [ТС]     Из массива в цикл (задача) #12
Net_Wanderer, извините пожалуйста, но нужно чтобы при запуске было написанно типа : введите последовательность. А потом выводился результат типа: 1(верное) и (0) неверное

Добавлено через 1 минуту
greeezz, у меня выводит ошибку stdafx.h: No such file or directory.

Добавлено через 15 минут
greeezz, мне кажется или вы сравниваете 2 числа, а не цифры одного и того же числа?
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
16.10.2011, 21:08     Из массива в цикл (задача) #13
Цитата Сообщение от Вася1q Посмотреть сообщение
Добавлено через 1 минуту
greeezz, у меня выводит ошибку stdafx.h: No such file or directory.
удалите этот include.

Добавлено через 15 минут
greeezz, мне кажется или вы сравниваете 2 числа, а не цифры одного и того же числа?
да, вы правы.
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
16.10.2011, 21:21  [ТС]     Из массива в цикл (задача) #14
greeezz, спасибо) Вы мне ооочень помогли)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 22:25     Из массива в цикл (задача)
Еще ссылки по теме:

Задача на вложенный цикл C++
C++ Задача по программированию. Цикл For
Задача на вложенный цикл C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
16.10.2011, 22:25     Из массива в цикл (задача) #15
еще одна функция которая проверяет последовательность в числе. получилось не очень красиво но работает.
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main(){
    int a,b,c;
    int capacity; 
    int p;
    bool no = false;
 
    cout << "enter number" << endl;
    cin >> a;
    capacity = static_cast<int>(log10(static_cast<double>(a)));
    p = static_cast<int>(pow(10.0,capacity));
 
 
    for(;p>1;p/=10){
        b = a%p;
        c = (b - b%(p/10))/(p/10);
        if(((a-b)/p) < c){
            cout << "NO" << endl;
            no = true;
            break;
        }
        a = b;
    }
    if(c == 0){
        cout << "YES" << endl;
    } else if(no == false){
        cout << "does not end by 0" << endl;
    }
 
    system("pause");
    return 0;
}
Yandex
Объявления
16.10.2011, 22:25     Из массива в цикл (задача)
Ответ Создать тему
Опции темы

Текущее время: 06:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru