Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы должно адекватно отражать суть решаемой задачи/проблемы.
Старый 22.11.2013, 01:21   #1
Максим28
 
Регистрация: 22.11.2013
Сообщений: 9
По умолчанию Дан массив из 18 вещественных чисел, все элементы которого различны. Не могу сделать вывод результатов. ( на С )

Дан массив из 18 вещественных чисел, все элементы которого различны.
1) Найти произведение (ненулевых) элементов массива, находящихся на позициях, кратных числу 3.
2) Найти квадраты всех чисел, расположенных между минимальным и максимальным значениями.
3) Упорядочить по возрастанию элементы, находящиеся на местах, не кратных числу 3.

Код:
#include <stdio.h>
#define SIZE 18

void search(int [], int);
void MaxMin(int [], int);
void increase(int [], int);

int main()
{
int arr[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};

search(arr, SIZE);
MaxMin(arr, SIZE);
increase(arr, SIZE);

return 0;
}

void search(int a[], int size) //произведение на позициях кратных трем
{
int f1 = 1;
int i;
for (i = 0; i < size; i++)
{
if (i % 3 == 0)
{
f1 *= a[i];
}
}
}

void MaxMin(int a[], int size) //нахождение квадратов
{
int max = a[0], min = a[0];
int A[size]; //в этом массиве будут храниться все квадраты нужных нам чисел
int i;

for (i = 0; i < size; i++)
{
if (max < a[i])
{
max = i;
}
if (min > a[i])
{
min = i;
}
}

int begin = min < max ? min : max;
int end = min > max ? min : max;

for (i = 0; begin <= end; begin++)
{
A[i] = a[begin] * a[begin];
i++;
}
}

void increase(int a[], int size) //сортировка по возрастанию всех элементов не кратных трем
{
int hold;
int i, j;

for (i = 0; i < size; i++)
for (j = 0; j < size; j++)
if (i % 3 != 0 && a[i] > a[i + 1])
{
hold = a[i];
a[i] = a[i + 1];
a[i + 1] = hold;
}
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 22.11.2013 в 08:51.
Максим28 вне форума Ответить с цитированием
Старый 22.11.2013, 01:36   #2
mvkvadrate
Новичок
Джуниор
 
Регистрация: 22.11.2013
Сообщений: 1
По умолчанию

Код:
void printArr(int a[], int size)
{
       for(int i = 0; i < size; i++) { printf("%d", a[i]); }
}
Вот тебе функция печати твоего массива элементов.
Думаю, ты разберешься с вызовом функции и передачей ей параметров.
mvkvadrate вне форума Ответить с цитированием
Старый 22.11.2013, 01:44   #3
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Если вас правильно понял, то можно printf() использовать. Но есть другой распространенный способ:
Код:
#include <iostream.h>
А потом в коде своем добавить cout<<что_хотим_вывести:
Код:
...
void search(int a[], int size) //произведение на позициях кратных трем
{
int f1 = 1;
int i;
for (i = 0; i < size; i++)
{
if (i % 3 == 0)
{
f1 *= a[i];
}
}
cout<<"Произведение на позициях кратных трем: "<<f1<<endl; 
}

void MaxMin(int a[], int size) //нахождение квадратов
{
int max = a[0], min = a[0];
int A[size]; //в этом массиве будут храниться все квадраты нужных нам чисел
int i;

for (i = 0; i < size; i++)
{
if (max < a[i])
{
max = i;
}
if (min > a[i])
{
min = i;
}
}

int begin = min < max ? min : max;
int end = min > max ? min : max;

for (i = 0; begin <= end; begin++)
{
A[i] = a[begin] * a[begin];
i++;
}

cout<<"Нахождение квадратов:";

while(i>=0){
	cout<<A[i]<<";";
}

cout<<endl;

}

void increase(int a[], int size) //сортировка по возрастанию всех элементов не кратных трем
{
int hold;
int i, j;

for (i = 0; i < size; i++)
for (j = 0; j < size; j++)  //поясните плиз
if (i % 3 != 0 && a[i] > a[i + 1])
{
hold = a[i];
a[i] = a[i + 1];
a[i + 1] = hold;
}

cout<<"Сортировка по возрастанию: ";

for (i = 0; i < size; i++)
cout<<a[i];

cout<<endl;
}
P.S.: Поясните, пожалуйста, момент один:

Код:
void increase(int a[], int size) //сортировка по возрастанию всех элементов не кратных трем
{
int hold;
int i, j;

for (i = 0; i < size; i++)
for (j = 0; j < size; j++)  <<======вот это нафига?
if (i % 3 != 0 && a[i] > a[i + 1])
{
hold = a[i];
a[i] = a[i + 1];
a[i + 1] = hold;
}
...
зачем вам j в итоге?
Baburek вне форума Ответить с цитированием
Старый 22.11.2013, 02:33   #4
Максим28
 
Регистрация: 22.11.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от mvkvadrate Посмотреть сообщение
Код:
void printArr(int a[], int size)
{
       for(int i = 0; i < size; i++) { printf("%d", a[i]); }
}
Вот тебе функция печати твоего массива элементов.
Думаю, ты разберешься с вызовом функции и передачей ей параметров.
Помогите пожалуйста, если можно подставте функцию.
Максим28 вне форума Ответить с цитированием
Старый 22.11.2013, 02:38   #5
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от Максим28 Посмотреть сообщение
Помогите пожалуйста, если можно подставте функцию.
Ты три штуки похожих вызвал в своем коде
Baburek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан числовой массив А, состоящий из n целых чисел . Если все элементы массива являютя чётными, то увеличьте положительные элементы Pantiks Паскаль, Turbo Pascal, PascalABC.NET 1 24.10.2013 16:59
дан массив вещественных чисел, матрица newgener Помощь студентам 5 26.05.2010 17:00