11. Объявите указатель на массив типа int и выделите память память для 12-ти
элементов. напишите три функции: первая должна заполнить ячейки
данными, вторая – показать данные на экран, третья - поменяет значения
четных и нечетных ячеек массива.
Например есть массив из 4-х элементов: 1 2 3 4
Данные после работы функции: 2 1 4 3
C/C++
Написать код на си .Желательно с объяснением
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 10
#define N 12
void fil(int *arr, int count)
{
srand(time(NULL));
for(int i = 0; i < count; i++)
arr[i] = rand()%MAX;
}
void print(int *arr, int count)
{
printf("\narray of %d digits:\n", count);
for(int i = 0; i < count; i++)
printf(" %d",arr[i]);
}
void swap(int *arr, int count)
{
for(int i = 0; i < count; i+=2)
arr[i]^=arr[i+1]^=arr[i]^=arr[i+1];
}
int main()
{
int *arr;
arr=(int*)malloc(N*sizeof(int));
if(!arr) exit(1);
fil(arr,N);
print(arr,N);
swap(arr,N);
printf("\n\nResult:");
print(arr,N);
free(arr);
system("pause");
return 0;
}

#include<stdlib.h>
#include<time.h>
#define MAX 10
#define N 12
void fil(int *arr, int count)
{
srand(time(NULL));
for(int i = 0; i < count; i++)
arr[i] = rand()%MAX;
}
void print(int *arr, int count)
{
printf("\narray of %d digits:\n", count);
for(int i = 0; i < count; i++)
printf(" %d",arr[i]);
}
void swap(int *arr, int count)
{
for(int i = 0; i < count; i+=2)
arr[i]^=arr[i+1]^=arr[i]^=arr[i+1];
}
int main()
{
int *arr;
arr=(int*)malloc(N*sizeof(int));
if(!arr) exit(1);
fil(arr,N);
print(arr,N);
swap(arr,N);
printf("\n\nResult:");
print(arr,N);
free(arr);
system("pause");
return 0;
}

#include <stdio.h>
#include <stdlib.h>
void iota(int* begin, int* end, int start) {
while (begin != end) *begin++ = start++;
}
void show(int* begin, int* end, int width) {
while (begin != end) printf("%*i", width, *begin++);
puts("");
}
void flip(int* begin, int* end) {
int* next = begin + 1;
while (next < end) {
int tmp = *begin;
*begin = *next;
*next = tmp;
begin += 2;
next += 2;
}
}
int main(void) {
size_t length = 12;
int* box = (int*)malloc(length * sizeof(int));
int* end = box + length;
iota(box, end, 1);
show(box, end, 4);
flip(box, end);
show(box, end, 4);
free(box);
return 0;
}
#include <stdlib.h>
void iota(int* begin, int* end, int start) {
while (begin != end) *begin++ = start++;
}
void show(int* begin, int* end, int width) {
while (begin != end) printf("%*i", width, *begin++);
puts("");
}
void flip(int* begin, int* end) {
int* next = begin + 1;
while (next < end) {
int tmp = *begin;
*begin = *next;
*next = tmp;
begin += 2;
next += 2;
}
}
int main(void) {
size_t length = 12;
int* box = (int*)malloc(length * sizeof(int));
int* end = box + length;
iota(box, end, 1);
show(box, end, 4);
flip(box, end);
show(box, end, 4);
free(box);
return 0;
}
Миша Мишин
if ( box== NULL) exit(1);
#include <stdio.h>
#include <stdlib.h>
int vvod(int * a, const int size)
{
int i;
int len = 0;
for(int x = 0; x < size; x++)
{
scanf("%d", &i);
if(i == 0) break; /* можно остановить ввод числом ноль */
*(a + x) = i;
len++;
}
return len;
}
void print(int *a, const int len)
{
for(int x = 0; x < len; x++)
{
printf("%d ",*(a + x));
}
putchar('\n');
}
void change(int *a, const int len)
{
int tmp;
for(int x = 0; x < len; x += 2)
{
if(x == len - 1) break; /* менять не на что */
tmp = *(a + x);
*(a + x) = *(a + x + 1);
*(a + x + 1) = tmp;
}
}
int main()
{
const int size = 12;
int * a, len;
a = (int *) malloc(size*sizeof(int));
len = vvod(a,size);
print(a,len);
change(a,len);
print(a,len);
free(a);
a = NULL;
return 0;
}
#include <stdlib.h>
int vvod(int * a, const int size)
{
int i;
int len = 0;
for(int x = 0; x < size; x++)
{
scanf("%d", &i);
if(i == 0) break; /* можно остановить ввод числом ноль */
*(a + x) = i;
len++;
}
return len;
}
void print(int *a, const int len)
{
for(int x = 0; x < len; x++)
{
printf("%d ",*(a + x));
}
putchar('\n');
}
void change(int *a, const int len)
{
int tmp;
for(int x = 0; x < len; x += 2)
{
if(x == len - 1) break; /* менять не на что */
tmp = *(a + x);
*(a + x) = *(a + x + 1);
*(a + x + 1) = tmp;
}
}
int main()
{
const int size = 12;
int * a, len;
a = (int *) malloc(size*sizeof(int));
len = vvod(a,size);
print(a,len);
change(a,len);
print(a,len);
free(a);
a = NULL;
return 0;
}
Леонид Проклов
Ввод значений ограничен двенадцатью элементов.
Чтобы ввести меньше, нужно указать ноль.
Вот пример ввода:
1 2 3 4 0
Выводит сначала то, что было в массиве, потом то, что стало:
1 2 3 4
2 1 4 3
Чтобы ввести меньше, нужно указать ноль.
Вот пример ввода:
1 2 3 4 0
Выводит сначала то, что было в массиве, потом то, что стало:
1 2 3 4
2 1 4 3
Похожие вопросы
- Помогите решить задачу на СИ желательно с объяснением
- Помогите написать код на Си, по теме "строки".
- Помогите написать код решения уравнения, желательно на с++
- Написать код на языке си
- Написать код на языке Си
- Как написать код по этому заданию? Программирование на Си
- Помогите, пожалуйста, написать код на C (Си)
- Помогите переделать код на Си
- Написать код на языке Си
- Помогите пожалуйста написать программу на Си