Перейти к содержимому

Фото
- - - - -

[C] Задание по массивам


  • Вы не можете создать новую тему
  • Please log in to reply
6 ответов в этой теме

#1 lucky 1

lucky 1
  • Пользователь
  • 258 сообщений
  • Откуда:нарва, тлн>муста

Отправлено 18 октября 2006 - 10:22

Получил в ТТУ задание такого вида:

Koostada programm, mille abil:
1. klaviatuurilt sisestatakse reaalarvulise massiivi A pikkus N (1<N<20) ja elemendid;
2. massiivist A elimineeritakse ja kantakse massiivi B kхik paarisindeksitega elemendid kuni massiiv A jддb tьhjaks.
3. ekraanile vдljastatakse masiiv B.

Собственно с 1 и 3 проблем никаких, а вот с удалением элементов из массива и проверкой "не стал ли он tuhjaks" непонятки. Как мне это реализовать?
Сначала присваиваю элементу из В значение чётного элемента из А, потом по идее надо этот элемент из А удалить, и так для всех чётных до конца массива, потом всё сначала, пока в А что-то есть. С программированием вообще знаком неделю, кого спрашивал - говорят, что удалять из массива нельзя. Как задать условие непустого массива тоже не догнал, знаю только sizeof, а оно выдаёт каждый раз тот размер, который задан изначально. С другой стороны, задание 1го семестра не может быть особо изощрённым, предыдущее-то сделал за день, учась с нуля. Может я просто туплю? или не с той стороны подхожу к проблеме =//

Сообщение изменено: 8=E (18 октября 2006 - 10:23 )

  • 0

#2 БугаГа

БугаГа
  • Пользователь
  • 260 сообщений
  • Откуда:-за

Отправлено 18 октября 2006 - 11:34

С другой стороны, задание 1го семестра не может быть особо изощрённым, предыдущее-то сделал за день, учась с нуля. Может я просто туплю? или не с той стороны подхожу к проблеме =//

ДА!

Попробуй добавить в массив C НЕчётные элементы массива А. Удали массив А, дальше все по кругу с массивом Ц, пока "массивить" будет не чего. С "Си" знаком поверхностно больше подсказать не могу (хотя и не этом дело). Да и решение громоздкое по ресурсам, уверен кто нить что нить поэффективней подскажет :)
  • 0
First they ingore you. Then they laugh at you. Then they fight you. Then you win. © Mahatma Ghandi

#3 Slash

Slash
  • Пользователь
  • 78 сообщений
  • Откуда:Estonia - Tallinn

Отправлено 18 октября 2006 - 12:57

Можно ввести переменную, в которой будет хранится кол-во элементов на данный момент. При переносе элемента уменьшаешь её на единицу. А вообще, я так полагаю, что задание на динамические структуры данных. Теорию с примерами можешь глянуть здесь и здесь.
  • 0

#4 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 18 октября 2006 - 15:35

держи
#include <stdio.h>
#include <math.h>

#define MIN 1
#define MAX 20

int
main(void)
{
	int N = 0;
	int i, j, k, id;
	double A[20];
	double B[20];
	
	printf("Enter N (1-20): \n");
	scanf("%d", &N);
	
	if (N < MIN || N > MAX)
	{
		printf("Out of range\n");
		return 1;
	}
	
	printf("Enter %d real values\n", N);
	for (i = 0; i < N; i++)
	  scanf("%lf", &A[i]);
	
	k = 0;
	for (i = 0; k < N; i++)
	{
	  id = (int)pow(2.0, (double)i);
	  for (j = id - 1; j < N; j += id*2)
		B[k++] = A[j];
	}
	  
	printf("-----\n");
	  
	printf("B = {");
	for (i = 0; i < N; i++)
	  printf("%.2lf%s", B[i], (i == N - 1) ? "}\n" : ", ");
	
	while (getchar() == '\n')
	 ;
	  
	
	return 0;
}
БугаГа, алгоритм будет одинаковый на любом языке
  • 0
int main(void)

#5 БугаГа

БугаГа
  • Пользователь
  • 260 сообщений
  • Откуда:-за

Отправлено 18 октября 2006 - 20:12

БугаГа, алгоритм будет одинаковый на любом языке


С "Си" знаком поверхностно больше подсказать не могу (хотя и не этом дело).

Хотя и не в этом делом имелось ввиду что мне влом вникать в задачу и что пожже кто нить напишет чтото полудше и поумней ;)

А например на Яве с её Листами, Массивами, Векторами и прочей дребеденью можно сделать оч по разному и там бы алгоритм был другой. Я знаю, знаю, это не массивы, но у нас даж опытный препод уже ArrayList массивом называет.

peace B)
  • 0
First they ingore you. Then they laugh at you. Then they fight you. Then you win. © Mahatma Ghandi

#6 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 18 октября 2006 - 20:18

ну на самом абстрактном уровне, есть просто множество значений с индексами.
если структура данных позвольяет удалять из любой позиции, тогда это действительно упрощает решение, и для 20 элементов на скорость можно забить :rolleyes:
  • 0
int main(void)

#7 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 18 октября 2006 - 22:42

V^v, быстрее O(n) - как у тебя, не сделать.. какие бы структуры не были
  • 0