Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
paskalnikita
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,066
#1

Ввести числа, пока не введен 0 и вывести все введеные числа

09.02.2017, 12:56. Просмотров 952. Ответов 15
Метки нет (Все метки)

Здравствуйте! Скажите пожалуйста, мне нужно реализовать ввод чисел, пока не будет введен 0. После того как был введен ноль, мне нужно вывести все числа которые я вписал(именно после того, как написал ноль), при этом не выводить ноль. Скажите пожалуйста, как можно это реализовать? Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2017, 12:56
Ответы с готовыми решениями:

Вводить числа, пока не введен 0, найти мининимальное значение
Вводится ряд чисел. Найти наименьшее число этого ряда. Признак окончания ввода...

Ввести строку текста (содержащую как слова так и числа), вывести все числа из данной строки
Ввести ленту произвольной длины, которую будем трактовать как текст, в котором...

Ввести набор номеров и вывести все простые числа
У меня есть код.Он просит ввести колличество номеров, и после ввода номера...

Ввести целое число N. Вывести все простые числа из диапазона [2,N]
Нужна помощь в решении некоторых задач. 1. Ввести целое число N. Вывести все...

Ввести натуральное число N и вывести все натуральные числа, не превосходящие N
Ввести натуральное число N и вывести все натуральные числа, не превосходящие N...

15
zss
Модератор
Эксперт С++
6990 / 6552 / 4154
Регистрация: 18.12.2011
Сообщений: 17,287
Завершенные тесты: 1
09.02.2017, 13:04 #2
посмотрите вот здесь:
Определить 3 наибольших числа в последовательности
0
FHelio
25 / 25 / 5
Регистрация: 04.01.2017
Сообщений: 52
09.02.2017, 13:04 #3
paskalnikita, по-моему std::vector то, что нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int> vec;
 
    int number;
    while((std::cin>>number) && number !=0)
        vec.push_back(number);
 
    for(const auto &x : vec)
        std::cout<<x<<" ";
    std::cout<<std::endl;
    return 0;
}
1
paskalnikita
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,066
09.02.2017, 13:05  [ТС] #4
нельзя использовать vector
0
FHelio
25 / 25 / 5
Регистрация: 04.01.2017
Сообщений: 52
09.02.2017, 13:06 #5
paskalnikita, тогда наращивайте в другой контейнер. Или нельзя использовать контейнеры C++ вообще?
0
paskalnikita
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,066
09.02.2017, 13:08  [ТС] #6
FHelio, можно использовать только стандартную библиотеку .нельзя vector string и прочие, в которые есть готовые решения. контейнер - это массив, правильно понял?
0
FHelio
25 / 25 / 5
Регистрация: 04.01.2017
Сообщений: 52
09.02.2017, 13:28 #7
paskalnikita, может тогда через sstream? Это ведь тоже из библиотеки ввода-вывода C++.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <sstream>
 
int main()
{
    std::ostringstream stream;
    int n;
    while(std::cin>>n && n)
        stream<<n<<" ";
    std::cout<<stream.str()<<"\n";
    return 0;
}
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
09.02.2017, 13:35 #8
" && n" - даже вот это по-моему можно убрать из while().
0
paskalnikita
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,066
09.02.2017, 13:38  [ТС] #9
нет. не подходит
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
09.02.2017, 13:38 #10
Дак нельзя же string использовать. Массив на 1000 элементов используй да и все!
1
GbaLog-
Любитель чаепитий
3161 / 1467 / 462
Регистрация: 24.08.2014
Сообщений: 5,192
Записей в блоге: 1
Завершенные тесты: 2
09.02.2017, 13:42 #11
Цитата Сообщение от paskalnikita Посмотреть сообщение
нельзя vector string и прочие, в которые есть готовые решения.
Это не решения, это инструменты.
0
paskalnikita
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,066
09.02.2017, 13:48  [ТС] #12
ну может и верно, просто я делал вот так:
// zadanie N1
#include <iostream>
using namespace std;

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main() {
    int num,K;
    int j=0;
    int tab[j];//тут мне написали  что будет массив размером 0 tab[0];
    while(true) {
        cout<<"Write number:";
        cin>>num;
        tab[j]=num;
        j++;
        if(num==0){
           break;
}
}
Ну и получается что не совсем правильно я делал массив с числами
0
FHelio
25 / 25 / 5
Регистрация: 04.01.2017
Сообщений: 52
09.02.2017, 14:07 #13
Цитата Сообщение от paskalnikita Посмотреть сообщение
int tab[j];//тут мне написали что будет массив размером 0 tab[0];
Неправильно вам написали.
1. В C++ нельзя создать массив переменной длины.
2. В C++ нельзя объявлять массив с 0 длинной.
SO:
https://stackoverflow.com/questions/6180012/array-with-size-0#6180200
1
MrGluck
Модератор
Эксперт CЭксперт С++
8054 / 4898 / 1426
Регистрация: 29.11.2010
Сообщений: 13,297
09.02.2017, 15:58 #14
Цитата Сообщение от paskalnikita Посмотреть сообщение
можно использовать только стандартную библиотеку
К счастью, string и vector как раз в неё входят.

Добавлено через 55 секунд
Цитата Сообщение от FHelio Посмотреть сообщение
1. В C++ нельзя создать массив переменной длины.
2. В C++ нельзя объявлять массив с 0 длинной.
И то и то ГНУ-ные расширения, хотя зачем нужно последнее - я не знаю.

Добавлено через 7 минут
Т.к. в условиях "не использовать ничего из стандартных средств С++" писать бессмысленно, то вот код на С
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct list
{
    int data;
    struct list *next;
} List;
 
 
void Insert(List *&head, const int x)
{
    List *cur = head;
    if (head)
        Insert(head->next, x);
    else
    {
        head = /*(List*)*/malloc(sizeof(List));
        head->data = x;
        head->next = cur;
    }
}
 
void Print(const List *head)
{
    while (head)
    {
        printf("%d\n", head->data);
        head = head->next;
    }
}
 
void Free(List *head)
{
    if (head)
        Free(head->next);
    free(head);
}
 
int main(void)
{
    int x;
    List *head = NULL;
 
    while (scanf("%d", &x) && x)
        Insert(head, x);
    Print(head);
 
    Free(head);
    return 0;
}
1
GbaLog-
Любитель чаепитий
3161 / 1467 / 462
Регистрация: 24.08.2014
Сообщений: 5,192
Записей в блоге: 1
Завершенные тесты: 2
09.02.2017, 16:02 #15
Цитата Сообщение от MrGluck Посмотреть сообщение
void Insert(List *&head, const int x)
Попались, в С нет ссылок! )))
0
MrGluck
Модератор
Эксперт CЭксперт С++
8054 / 4898 / 1426
Регистрация: 29.11.2010
Сообщений: 13,297
09.02.2017, 16:16 #16
Лучший ответ Сообщение было отмечено paskalnikita как решение

Решение

Цитата Сообщение от GbaLog- Посмотреть сообщение
Попались, в С нет ссылок! )))
Виноват,
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct list
{
    int data;
    struct list *next;
} List;
 
void Insert(List **head, const int x)
{
    List *cur = *head;
    if (*head)
        Insert(&(*head)->next, x);
    else
    {
        *head = /*(List*)*/malloc(sizeof(List));
        (*head)->data = x;
        (*head)->next = cur;
    }
}
 
void Print(const List *head)
{
    while (head)
    {
        printf("%d\n", head->data);
        head = head->next;
    }
}
 
void Free(List *head)
{
    if (head)
        Free(head->next);
    free(head);
}
 
int main(void)
{
    int x;
    List *head = NULL;
 
    while (scanf("%d", &x) && x)
        Insert(&head, x);
    Print(head);
 
    Free(head);
    return 0;
}
3
09.02.2017, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2017, 16:16

Ввести целое число N. Вывести все простые делители этого числа
прошу помочь над 2 задачами в с++: 1. Ввести целое число N. Вывести все...

Ввести целое число N. Вывести все простые делители этого числа
помогите с двумя задачами... только начали программирование... 1. Ввести...

Нужно ввести два числа, а вывести ряд от первого числа до второго
Например, ввели 2 и 5, а вывели : 2345


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru