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

Сформировать целочисленный массив A(2n) - C++

Восстановить пароль Регистрация
 
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
02.10.2013, 20:09     Сформировать целочисленный массив A(2n) #1
Ещё раз всем добрый вечер, часов я уже надоел, но всё же, помогите разобраться
Дано натуральное число n. Сформировать целочисленный массив A(2n), элементами которого являются числа

1, 3, 5, . . . , 2n-1, 2n, 2n-2, 2n-4, . . . , 2.
Есть исходный код:
#include "stdafx.h" //подключение директив
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <conio.h>



void title() //функция текстового заголовка
{
printf("Dano naturalnoe chislo n. Sformirovat celochislennyj massiv IM(2n)\n");
printf("1 2n 2 2n-1 3 2n-2 ... n n+1\n\n\n");
}



int input() //функция ввода данных
{
printf ("Vvedite znachenie n (ot 1 do 999) and press <ENTER>: "); //вывод на экран приглашения на ввод данных
char str[4],c; //объявление символьных переменных
int pos=0; //инициализация переменной количества вводимых символов
do //выполняем ввод данных
{
c = getch(); //считывание введённого символа без эхо-отображения
if(c>='0'&&c<='9' && pos<3) //если переменная соответствует диапазону
//и не превышает разрешённое количество вводимых символов
{
str[pos++]=c; //двигаем позицию курсора на шаг вправо, и присваиваем введённое значение
printf("%c",c); //то выводим его на экран
}
else if(c==0x08 && pos>0) //если введён <backspace>
{
pos--; //двигаем позицию курсора на шаг влево
printf("%c %c",c,c);
}
} while(c!=0x0D); //ввод данных выполняется, пока не введён <enter>
str[pos]=0;
return atoi(str); //преобразование символьной строки в число типа int и её возврат в основную функцию
}



void mas (int *Z, int y) //функция формирования массива
{
for (int i=0; i<y; i++)
{
Z[2*i]=i+1;
Z[2*i+1]=2*y-i;
}
}



void output (int *R, int f) //функция вывода данных
{
char str[200],buf[100]; //объявление символьных переменных
if (f==0) printf("\nNevozmozhno postroit massiv: dannie vvedeny nekorrektno");
//вывод на экран сообщения при введённом нуле
else
{
int razm=2*f; //подсчёт количества элементов массива
printf("\nKolichestvo elementov massiva = %d \n\n", razm); //вывод на экран количества элементов массива
printf("Massiv: \n");
strcpy(str,""); //Обнуление значения результирующей строки
for (int i=0; i<razm; i++)
{
sprintf(buf,"%d",R[i]); //Конвертирование текущего элемента массива в строку
if(strlen(str)+strlen(buf)>=79) //Если общая длина строки с новым элементом больше 79
{
printf("%s\n",str); //Вывод строки без этого элемента
strcpy(str,buf); //Замена выведенной строки этим элементом
}
else
{
strcat(str," "); //Добавить пробел
strcat(str,buf); //Добавить к общей строке значение текущего элемента
}
}
printf("%s\n",str); //Вывод оставшейся строки
}
printf("\n\n"); //двойной перенос строки
}


int main() //основная функция
{
title(); //вызов функции title
char r; //объявление символьной переменной
do //начало выполнения цикла
{
int en = input(); //вызов функции input
int *IM=(int *)malloc(2*en*sizeof(int)); //объявление массива с динамич. выделением памяти
mas(IM, en); //вызов функции mas
output(IM, en); //вызов функции output
free(IM); //освобождение выделенной памяти
printf("PRESS <ENTER> TO CONTINUE \nPRESS <ANY KEY> TO EXIT \n"); //диалог о завершении/продолжении работы
r=getch(); //считывание введённого символа без эхо-отображения
printf("\n\n"); //перенос строки
}
while (r==0x0D); //программа будет выполняться до тех пор, пока не будет нажат <ENTER>
}
Но, в нем элементами массива являются числа : 1 2n 2 2n-1 3 2n-2 ... n n+1
Вопрос: где в данном коде идет описание элементов массива, где поменять на необходимые мне элементы массива.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 20:09     Сформировать целочисленный массив A(2n)
Посмотрите здесь:

C++ Сформировать целочисленный массив A(75), элементами которого являются случайные числа из диапазона [-5, 20]
C++ Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент
Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 C++
C++ Сформировать целочисленный массив
Даны целые числа N(>2). Сформировать и вывести целочисленный массив размера N, C++
Сформировать и вывести целочисленный массив размера N, содержащий степени двойки от 1 до N C++
C++ Сформировать целочисленный массив по заданному правилу
C++ Считать из файла целочисленный массив C[N] и сформировать из него максимально возможную матрицу А [n x n]

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
02.10.2013, 20:26     Сформировать целочисленный массив A(2n) #2
Очевидно там, где написано "функция формирования массива" .
Для Вашего случая эта функция будет выглядеть как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void mas (int *Z, int y) //функция формирования массива (я особо не заморачивался, написал в лоб)
{
    for (int i = 0; i < y; i++) 
    { 
        Z[i] = 2*i + 1;
    }
    
    for (int i = 0; i < y; i++) 
    {
        Z[2 * y - 1 - i] = 2 * i;
    }
}
apowOw
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21
02.10.2013, 20:34  [ТС]     Сформировать целочисленный массив A(2n) #3
Даже без особых заморочек ты написал её) Спасибо Огромное, ещё раз убеждаюсь, что здесь собрались умные и отзывчивые люди!
Yandex
Объявления
02.10.2013, 20:34     Сформировать целочисленный массив A(2n)
Ответ Создать тему
Опции темы

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