Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > C/C++ > C/C++
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.01.2013, 17:51
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию Массив в обратном порядке

Мне необходимо написать программу, которая отображает массив чисел в обратном порядке и количество значений в массиве.
Сначала я решил написать программу следующим образом:
Код:
#include <stdio.h>
#include <conio.h>
define SIZE 10

int main() {
	int  a[SIZE];
	int i, pass, hold;
	for (i = 0; i <=  SIZE- 1; i++)
		scanf("%s", &a[SIZE]);
	for(pass = 1; pass<=  SIZE- 1; pass++)
		for(i = 0; i <=  SIZE- 2; i++)
			if(a[i] < a[i + 1]) {
				hold = a[i];
				a[i] = a[i + 1];
				a[i + 1] = hold;
			}
			for(i = 0; i <=  SIZE- 1; i++)
				printf("%4d\n", a[i]);
			printf("%4d\n", a[SIZE]);
			getch();
			return 0;
}
Потом я изменил программу так:
Код:
#include <stdio.h>
#include <conio.h>

int main() {
	int m, a[m];
	int i, pass, hold;
	for (i = 0; i <= m - 1; i++)
		scanf("%s", &a[m]);
	for(pass = 1; pass<= m - 1; pass++)
		for(i = 0; i <= m - 2; i++)
			if(a[i] < a[i + 1]) {
				hold = a[i];
				a[i] = a[i + 1];
				a[i + 1] = hold;
			}
			for(i = 0; i <= m - 1; i++)
				printf("%4d\n", a[i]);
			printf("%4d\n", m);
			getch();
			return 0;
}
Как сделать так, чтобы выводился массив с произвольными значениями и с количеством значений? Функцию while нужно выводить перед функцией for?
Ответить с цитированием
  #2  
Старый 02.01.2013, 03:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,375
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Цитата:
Сообщение от MahovIV
Как сделать так, чтобы выводился массив с произвольными значениями и с количеством значений? Функцию while нужно выводить перед функцией for?

Для создания массива надо использовать new, а сам массив определять как int * a[]; например. Случайное число можно получить через функцию rand. Под рукой нет компилятора С, так что пример ниже надо будет проверить по справке, но идея такая:
Код:
int main()
{
int N = rand(100) + 1; // кол-во элементов

int * a = new int[N];

// Вывод кол-ва элементов
printf("Array size is %d\n",N);

// Инициализация случайными числами и вывод в прямом порядке
for (int i = 0; i < N; i++) 
{ 
  a[i] = rand(2000) - 1000;
  printf("%d, ",a[i]); 
}
printf("\n");

// Вывод в обратном порядке
for (int i = N; i > -1; i--) 
{ 
  printf("%d, ",a[i]); 
}
printf("\n");

delete [] a;
}

Последний раз редактировалось lmikle, 02.01.2013 в 07:55.
Ответить с цитированием
  #3  
Старый 02.01.2013, 07:38
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,238
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

lmikle, ты уж определись, malloc или new. Или то, или другое, вместе то зачем?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #4  
Старый 02.01.2013, 07:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,375
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Цитата:
Сообщение от PhoeniX
lmikle, ты уж определись, malloc или new. Или то, или другое, вместе то зачем?


Упс, не поправил код
Хотел сначала через malloc написать, потом через new переделал...
Поправил...
Ответить с цитированием
  #5  
Старый 02.01.2013, 22:02
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Для создания массива надо использовать new, а сам массив определять как int * a[]; например. Случайное число можно получить через функцию rand. Под рукой нет компилятора С, так что пример ниже надо будет проверить по справке, но идея такая:
Код:
int main()
{
int N = rand(100) + 1; // кол-во элементов

int * a = new int[N];

// Вывод кол-ва элементов
printf("Array size is %d\n",N);

// Инициализация случайными числами и вывод в прямом порядке
for (int i = 0; i < N; i++) 
{ 
  a[i] = rand(2000) - 1000;
  printf("%d, ",a[i]); 
}
printf("\n");

// Вывод в обратном порядке
for (int i = N; i > -1; i--) 
{ 
  printf("%d, ",a[i]); 
}
printf("\n");

delete [] a;
}
Мне кажется, что высделали опечатку. В Microsoft Visual Studio C++ Express 2010 функция rand подчёркивается красным цветом.
Ответить с цитированием
  #6  
Старый 03.01.2013, 04:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,375
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Там include соотв. надо добавить, не помню какой.
Посмотри по справке.
Ответить с цитированием
  #7  
Старый 04.01.2013, 16:35
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Там include соотв. надо добавить, не помню какой.
Посмотри по справке.
Надо добавить #include <stdlib.h>
Ответить с цитированием
  #8  
Старый 04.01.2013, 16:59
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Для создания массива надо использовать new, а сам массив определять как int * a[]; например. Случайное число можно получить через функцию rand. Под рукой нет компилятора С, так что пример ниже надо будет проверить по справке, но идея такая:
Код:
int main()
{
int N = rand(100) + 1; // кол-во элементов

int * a = new int[N];

// Вывод кол-ва элементов
printf("Array size is %d\n",N);

// Инициализация случайными числами и вывод в прямом порядке
for (int i = 0; i < N; i++) 
{ 
  a[i] = rand(2000) - 1000;
  printf("%d, ",a[i]); 
}
printf("\n");

// Вывод в обратном порядке
for (int i = N; i > -1; i--) 
{ 
  printf("%d, ",a[i]); 
}
printf("\n");

delete [] a;
}
Компиллятор ругается на большие значения функции rand.
Ответить с цитированием
  #9  
Старый 04.01.2013, 20:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,375
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

М-м-м... а что, в документацию лень заглянуть?..
Код:
...
int N = rand() % 100 + 1;
...
s[i] = rand() % 2000 - 1000;
...
Ответить с цитированием
  #10  
Старый 28.01.2013, 00:33
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Я сделал программу вот-так. Как в этом случае отобразить элементы массива в обратном порядке?
Код:
#include <stdio.h>
#include <conio.h>

int main() {

	int T, a[1000], i, N;
	scanf("%d", &T);
	while(T > 0) {
		scanf("%d", &N);
		
		/*for(i = N; i >= 0; i--)*/
		while(N > 0) {
			scanf("%d", &a[N]);
			printf(" %d", a[N]);
			N--;
		}
			T--;
	}
			getch();
			return 0;
	}
Ответить с цитированием
Ответ



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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter