Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 4

Вывести через один элементы массива, начиная с первого

03.10.2017, 20:52. Показов 2962. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вывести через один элементы массива, начиная с первого.
Входные данные:
В первой строке входного потока задано натуральное число N - количество элементов целочисленного массива (N < 1000).
Во второй строке перечислены через пробел значения элементов массива Ai (-32000 < Ai < 32000)
Выходные данные:
Вывести в строку через пробел значения элементов заданного массива.
Пример входного файла (input.txt):
5
2 5 1 100 -930
Пример выходного файла (output.txt):
2 1 -930
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2017, 20:52
Ответы с готовыми решениями:

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

Очередь, удалить элементы из очереди через один начиная с первого
Помогите где ошибка. Вот модуль: unit delete_1; interface uses add_element; procedure DelElement; implementation procedure...

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

21
15 / 15 / 8
Регистрация: 01.10.2017
Сообщений: 97
04.10.2017, 01:37
наработки есть ?
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 4
05.10.2017, 18:03  [ТС]
нет
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
05.10.2017, 18:22
А хотя бы вывод всех элементов подряд реализовать можете? А ввод-вывод?
0
 Аватар для Michail97
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
05.10.2017, 19:18
Для ленивых даже файл создавать и вводить туда значения не надо.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define in "input.txt"
#define out "output.txt"
 
int main( void )
{
    FILE *f;
    int number;
    printf( "Count of numbers: ");
    scanf( "%d", &number );
    srand( time(NULL) );
    if( ( f = fopen( in, "w+")) == NULL )
            perror("Error:");
    fprintf( f, "%2d\n", number );
    for( int i = 0; i < number; i++ )
            fprintf( f, "%2d ", (rand()%100+1) );
    fseek( f, 2, SEEK_SET );
    int mass[number];
    for( int i = 0; i < number; i++ )
                fscanf( f, "%d", mass + i );
    if( (f = freopen( out, "w+", f)) == NULL )
            perror("Error:");
    fprintf( f, "  \n" );
    for( int i = 0; i < number; i++ )
        if( !(i%2) )
            fprintf( f,"%d ", mass[i] );
    if( number%2 )
        number = number/2 + 1;
    else number /= 2;
    fseek( f, 0, SEEK_SET );
    fprintf( f, "%2d", number );
    fclose( f );
    return 0;
}
0
05.10.2017, 19:34

Не по теме:


Цитата Сообщение от Michail97 Посмотреть сообщение
Для ленивых даже файл создавать и вводить туда значения не надо.
Конечно не надо, можно ввод/вывод перенаправить.

0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
05.10.2017, 19:44
Хитро, хитро! Вроде и решил (не уверен что правильно), но чтобы использовать, ТСу придется хоть немного разобраться.
Цитата Сообщение от Michail97 Посмотреть сообщение
C++
1
fscanf( f, "%d", mass + i );
нагляднее было бы &mass[i]
Цитата Сообщение от Michail97 Посмотреть сообщение
C++
1
2
for( int i = 0; i < number; i++ )
  if( !(i%2) ) fprintf( f,"%d ", mass[i] );
Проще было бы через i+=2;
Цитата Сообщение от Michail97 Посмотреть сообщение
C++
1
2
3
4
5
if( number%2 ) 
  number = number/2 + 1;
  else number /= 2;
fseek( f, 0, SEEK_SET );
fprintf( f, "%2d", number );
эту магию я вообще не понял.
0
 Аватар для Michail97
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
05.10.2017, 19:49
COKPOWEHEU,
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
эту магию я вообще не понял.
да записал новое кол - во в первой строке. Я предварительно создал там 2 пробела.

Добавлено через 55 секунд
C
1
fprintf( f, " *\n" );
Тут
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
05.10.2017, 20:23
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
нагляднее было бы &mass[i]
Нагляднее было бы пользоваться языком C++ в ветке C++.
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.10.2017, 06:36
Цитата Сообщение от Michail97 Посмотреть сообщение
C++
1
2
if( ( f = fopen( in, "w+")) == NULL )
  perror("Error:");
ошибку вывели, но программу заставили работать дальше с нулевым указателем, классно!
ещё и freopen зафигачили туда, чтобы ещё медленней работало, отлично!
короче бред какой-то написан.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
 
int main()
{
    size_t n;
    std::cin >> n;
 
    std::vector<short> vals;
    vals.reserve(n / 2 + 1);
    
    short tmp;
    for (size_t it = 0; it < n && std::cin >> tmp; ++it)
    {
        if (!(it & 1))
            vals.push_back(tmp);
    }
    
    for (const auto it : vals)
        std::cout << it << ' ';
}
Добавлено через 15 секунд
Цитата Сообщение от Michail97 Посмотреть сообщение
C++
1
2
if( ( f = fopen( in, "w+")) == NULL )
  perror("Error:");
ошибку вывели, но программу заставили работать дальше с нулевым указателем, классно!
ещё и freopen зафигачили туда, чтобы ещё медленней работало, отлично!
короче бред какой-то написан.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
 
int main()
{
    size_t n;
    std::cin >> n;
 
    std::vector<short> vals;
    vals.reserve(n / 2 + 1);
    
    short tmp;
    for (size_t it = 0; it < n && std::cin >> tmp; ++it)
    {
        if (!(it & 1))
            vals.push_back(tmp);
    }
    
    for (const auto it : vals)
        std::cout << it << ' ';
}
0
 Аватар для Michail97
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
06.10.2017, 07:09
GbaLog-, нулевой указатель. Вы что? У меня никаких ошибок, когда протестил не было. Да и где вы видите нулевой указатель, не пойму. Если бы он был, в консоли вывелось бы сообщение.

Добавлено через 8 минут
Если боитесь, что файл вдруг не создастся, хотя я такого рредставить не могу, ставте реторн.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.10.2017, 07:12
Цитата Сообщение от Michail97 Посмотреть сообщение
Если бы он был, в консоли вывелось бы сообщение.
вот именно, что в консоль только бы и вывелось сообщение, такой обработки ошибки недостаточно.
большинство программ должно работать без участия человека, либо с минимальным его участием, так что возможности увидеть ваш вывод в консоль в виде "Error" может быть некому.
Цитата Сообщение от Michail97 Посмотреть сообщение
Да и где вы видите нулевой указатель, не пойму.
тут:
Цитата Сообщение от GbaLog- Посмотреть сообщение
( f = fopen( in, "w+")) == NULL
если fopen вернёт NULL, то выведется сообщение и программа продолжит своё выполнение, везде передавая нулевой указатель.
в лучшем случае, программа грохнется на следующей же строчке, в худшем вас ждёт весёлая ночка в обнимку с отладчиком.
не в данном случае, конечно, т.к. программа слишком мала, чтобы на диагностику тратить так много времени, но в будущем, когда ваши программы будут на тысячи строк, это будет уже критично.
0
 Аватар для Michail97
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
06.10.2017, 07:16
GbaLog-, да, я обычно пишу реторн. Не знаю чего решил без него. Может, потому что файл создаю. Может , потому что не для себя пишу. Тут я согласен, что вы правы.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.10.2017, 07:20
Цитата Сообщение от Michail97 Посмотреть сообщение
хотя я такого рредставить не могу
да легко, кол-во одновременно открытых файловых дескрипторов ограничено.
у меня уже был такой опыт, когда они попросту заканчивались.
0
 Аватар для Michail97
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
06.10.2017, 07:23
GbaLog-, нет там нулевого указателя.

Добавлено через 1 минуту
GbaLog-, ну разве что по этой причине. У меня пока такого лпыта не было)

Добавлено через 1 минуту
GbaLog-, в макроопределениях написаны названия файлов.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.10.2017, 07:27
Цитата Сообщение от Michail97 Посмотреть сообщение
нет там нулевого указателя.
к чему эти споры?
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
#include <iostream>
#include <cstdio>
#include <list>
 
int main()
{
    std::list<std::FILE *> files;
    
    for (;;)
    {
        std::FILE * newDescr = std::fopen("/bin/ls", "rb");
        
        if (newDescr == NULL)
        {
            std::cerr << "Ого, нифига себе, нулевой указатель!\n"
                << "Кол-во открытых файлов: " << files.size() << "\n";
            break;
        }
        
        files.push_back(newDescr);
    }
    
    for (auto & it : files)
        std::fclose(it);
}
http://rextester.com/FBNWJ88690
или на моём компьютере:
Code
1
2
3
4
$ g++ a.cpp 
$ ./a.out 
Ого, нифига себе, нулевой указатель!
Кол-во открытых файлов: 1021
0
 Аватар для Michail97
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
06.10.2017, 07:39
GbaLog-, бред так бред. Спора нет.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
06.10.2017, 10:48
Цитата Сообщение от GbaLog- Посмотреть сообщение
в будущем, когда ваши программы будут на тысячи строк, это будет уже критично
Ну сравнили) Школьную задачу, в которой на форуме можно вообще не обрабатывать ошибки - пометить /*добавить обработку ошибок*/ и ладно. Если ТСу надо - добавит. А в серьезных задачах зачастую простого return'а не хватит, нужно лог как минимум, для интерактивных программ - повторный запрос.
Цитата Сообщение от Michail97 Посмотреть сообщение
GbaLog-, нулевой указатель. Вы что? У меня никаких ошибок, когда протестил не было.
Попробуйте запретить программе доступ к этим файлам, а лучше - к директории. Еще можно запустить с флешки и успеть ее выдернуть. Тестирование это отдельное развлечение.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.10.2017, 12:16
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Попробуйте запретить программе доступ к этим файлам, а лучше - к директории. Еще можно запустить с флешки и успеть ее выдернуть.
а можно просто обратиться к несуществующему файлу, что очень часто и случается.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну сравнили
я больше люблю учиться на чужих ошибках, чем на своих.

Добавлено через 15 секунд
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Попробуйте запретить программе доступ к этим файлам, а лучше - к директории. Еще можно запустить с флешки и успеть ее выдернуть.
а можно просто обратиться к несуществующему файлу, что очень часто и случается.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну сравнили
я больше люблю учиться на чужих ошибках, чем на своих.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
06.10.2017, 12:53
Цитата Сообщение от GbaLog- Посмотреть сообщение
а можно просто обратиться к несуществующему файлу, что очень часто и случается.
У него в начале стоит создание файла, так что только запрет записи в директории. Хотя можно извратнуться и удалить файл сразу после создания, но это уже для труЪ джедаев.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2017, 12:53
Помогаю со студенческими работами здесь

Процедура: все элементы массива, начиная с первого, сдвинуть вправо
все элементы массива,начиная с первого ,необходимо подвинуть вперед. Первому элементу присвоить значение 0

Борланд Си++ (Увеличить все элементы массива, начиная с первого положительного)
1) Задан массив целых чисел. Увеличить все элементы этого массива начиная с первого положительного элемента в два раза. Заранее...

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

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

Начиная с первого элемента и перемещаясь против часовой стрелки, вывести все элементы матрицы по спирали
Дана квадратная матрица A порядка M (M — нечетное число). Начиная с первого элемента и перемещаясь против часовой стрелки, вывести все ее...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru