Из массива удалить последний из нечетных элементов.
Пример: из массива A[5]: 1 3 4 5 6 должен получиться
массив A[4]: 1 3 4 6.
Другие языки программирования и технологии
Помогите пожалуйста с задачкай на языке СИ
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#include <conio.h>
int main () {
int * vector = NULL, * temp = NULL;
rsize_t size = 5;
size_t n, m, index = size;
setlocale(LC_CTYPE, "Russian_Russia.1251");
printf("\n\tВведите массив: \n\n");
vector = (int *)calloc(size, sizeof(int));
for (n = 0; n < size; n++) {
printf(" vector[%u] -> ");
scanf_s("%i", &vector[n]);
}
system("cls");
for (n = 0; n < size; n++) printf(" %i ", vector[n]);
printf("\n");
for (--n; n >= ULONG_MAX; n--) if (vector[n] & 1) { index = n; break; }
if (index != size) {
temp = (int *)calloc(size, sizeof(int));
for (n = 0; n < size; n++) temp[n] = vector[n];
vector = (int *)realloc(vector, (size - 1) * sizeof(int));
m = 0;
for (n = 0; n < size; n++) if (n != index) vector[m++] = temp[n];
free(temp);
temp = NULL;
--size;
for (n = 0; n < size; n++) printf(" %i ", vector[n]);
} else printf(" Массив не содержит нечётных элементов! \n\a");
free(vector);
vector = NULL;
_getch();
return 0;
}
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#include <conio.h>
int main () {
int * vector = NULL, * temp = NULL;
rsize_t size = 5;
size_t n, m, index = size;
setlocale(LC_CTYPE, "Russian_Russia.1251");
printf("\n\tВведите массив: \n\n");
vector = (int *)calloc(size, sizeof(int));
for (n = 0; n < size; n++) {
printf(" vector[%u] -> ");
scanf_s("%i", &vector[n]);
}
system("cls");
for (n = 0; n < size; n++) printf(" %i ", vector[n]);
printf("\n");
for (--n; n >= ULONG_MAX; n--) if (vector[n] & 1) { index = n; break; }
if (index != size) {
temp = (int *)calloc(size, sizeof(int));
for (n = 0; n < size; n++) temp[n] = vector[n];
vector = (int *)realloc(vector, (size - 1) * sizeof(int));
m = 0;
for (n = 0; n < size; n++) if (n != index) vector[m++] = temp[n];
free(temp);
temp = NULL;
--size;
for (n = 0; n < size; n++) printf(" %i ", vector[n]);
} else printf(" Массив не содержит нечётных элементов! \n\a");
free(vector);
vector = NULL;
_getch();
return 0;
}
1. Перебирать элементы в цикле, если нечетный то запомнить номер элемента или перебирать с конца, если нечетный запомнить номер элемента и break.
2. Цикл от запомненного номера до предпоследнего - присваивать значение следующего.
3. Уменьшить размер массива на единицу.
2. Цикл от запомненного номера до предпоследнего - присваивать значение следующего.
3. Уменьшить размер массива на единицу.
да, все верно, с конца просматриваем массив, запоминаем индекс первого попавшегося нечетного элемента. Затем размерность массива уменьшаем на единицу и сжимаем массив.
осталось выяснить, как определить элемент четный или нет. вот это я не знаю
осталось выяснить, как определить элемент четный или нет. вот это я не знаю
а счетчик от первого нечетного сразу изменять на 2 вам преподаватель не позволяет или какие то убеждения?? ?
а массив "безразмерный"? если в функции то надобы
а массив "безразмерный"? если в функции то надобы
Похожие вопросы
- Помогите, пожалуйста, написать программу на языке Си
- Помогите, пожалуйста, с нахождением факториала. Язык Си.
- помогите пожалуйста проверить код на языке си, программа работает неверно - не выдает сумму массива Z
- Помогите пожалуйста создать программу "Таймер" на СИ. Заранее всем благодарен!)
- Помогите с разрешением вопроса по языку СИ(не с++)
- Помогите написать (исправить) программу на языке Си++
- Помогите пожалуйста написать программу на языке программирования AssemblerКто первый поможет сделать правильно10балов+50
- Помогите пожалуйста написать простую программу на "Си" по теме: "Стеки"
- Всем привет! Помогите, пожалуйста, разобраться с алгоритмическим языком (псевдокодом)
- помогите, пожалуйста, написать программу на языке Паскаль