С Новым годом! Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 25
1

Free Basic. Проверить программу

29.01.2013, 01:25. Показов 2638. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Работаю на Джини, но он, по каким-то неведомым причинам, не компилирует. Free Basic нигде нормального(который бы устанавливался) не могу найти, поэтому все делал практически в слепую.

Задача предо мной стояла такая:

Сгенерировать случайным образом массив целых чисел (в дипазоне -100 до 100), размерностью N=60, и отсортировать по возрастанию модуля на языке Бейсик. Вывести количество элементов выше 50.

Вот, что я написал:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
DIM i(60) AS INTEGER
DIM AS INTEGER a, b, c, s
 
s=0
 
RANDOMIZE TIMER
FOR a = 1 TO 60
i(a) = INT(RND * 200) - 100
PRINT i(a)
NEXT a
 
PRINT "Sortirovka"
FOR a = 1 TO 60
FOR b = a TO 60
IF ABS(i(a)) > ABS(i(b)) THEN
c = i(a)
i(a) = i(b)
i(b) = c
END IF
NEXT a
NEXT b
 
FOR a = 1 TO 60
PRINT i(a)
NEXT a
 
FOR a = 0 TO 59
IF i(60 - a) >= 50 THEN
s=s+1
END IF
EXIT FOR
NEXT a
PRINT "Kolichestvo elementov vishe 50: ", 60 - a
 
SLEEP
Ребят, пожалуйста, проверьте, правильно или нет. Если нет, то подскажите, что неверно и как исправить.

Ps. Не серчайте если я с темой не угадал или что-то не правильно назвал/сказал. Просто я еще совсем совсем зеленый в программировании. Начинающий.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2013, 01:25
Ответы с готовыми решениями:

нужно написать программу в Free Basic
Написать программу распечатки результатов раздачи игральных карт из колоды (по шесть карт трем...

Программа free basic
В исходной строке a, состоящей из цифр, определить среднее арифметическое цифр, входящих в строку....

Найти среднее арифметичесое на Free Basic
В группе n-курсантов. h-рост каждого курсанта. Если рост h<130см, то обходят курсанта стороной, то...

Определить сумму старших цифр числа (Free Basic)
Задача 3. Даны натуральные числа т и п. Определить сумму старших т цифр числа п. Задача 4. Дано...

3
Заблокирован
29.01.2013, 09:22 2
PureBasic
1
DIM i(1 to 60) AS INTEGER
Цитата Сообщение от Евгений Нефёдов Посмотреть сообщение
PureBasic
1
DIM AS INTEGER a, b, c, s
может так?
PureBasic
1
DIM a, b, c, s AS INTEGER
а правильнее
PureBasic
1
DIM a AS INTEGER, b AS INTEGER, c AS INTEGER, s AS INTEGER
Цитата Сообщение от Евгений Нефёдов Посмотреть сообщение
Сгенерировать случайным образом массив целых чисел (в дипазоне -100 до 100)
Это не
PureBasic
1
i(a) = INT(RND * 200) - 100
а
PureBasic
1
i(a) = INT(RND * 201) - 100
Цитата Сообщение от Евгений Нефёдов Посмотреть сообщение
PureBasic
1
PRINT "Kolichestvo elementov vishe 50: ", 60 - a
наверно
PureBasic
1
PRINT "Kolichestvo elementov vishe 50: ", S
Циклы сортировки
PureBasic
1
2
FOR a = 1 TO 59
FOR b = a+1 TO 60
1
126 / 53 / 1
Регистрация: 26.10.2012
Сообщений: 89
29.01.2013, 09:29 3
Цитата Сообщение от Апострофф Посмотреть сообщение
может так? DIM a, b, c, s AS INTEGER
Так как раз нельзя.

В сортировку не вглядывался, у меня ваш код с небольшими поправками выдает верный результат:

Код
Dim i(1 To 60) As Integer
Dim As Integer a, b, c, s

Randomize Timer
For a = 1 To 60
	i(a) = Int(Rnd * 201) - 100
	Print i(a)
Next a

Print "Sortirovka"
For a = 1 To 60
	For b = a To 60
		If Abs(i(a)) > Abs(i(b)) Then
			c = i(a)
			i(a) = i(b)
			i(b) = c
		End If
	Next 
Next 

For a = 1 To 60
	Print i(a)
Next a

For a = 1 To 60
	If i(a) >= 50 Then
		s=s+1
	End If
Next 
Print "Kolichestvo elementov vishe 50: ", s

Sleep
1
2 / 2 / 0
Регистрация: 17.08.2017
Сообщений: 30
26.01.2018, 20:49 4
Цитата Сообщение от Евгений Нефёдов Посмотреть сообщение
PRINT "Sortirovka"
FOR a = 1 TO 60
FOR b = a TO 60
IF ABS(i(a)) > ABS(i(b)) THEN
c = i(a)
i(a) = i(b)
i(b) = c
END IF
NEXT a
NEXT b
Предложил бы так, что бы не сравнивать одинаковые элементы массива
Код
FOR a = 1 TO 59
FOR b = a+1 TO 60
IF ABS(i(a)) > ABS(i(b)) THEN
c = i(a)
i(a) = i(b)
i(b) = c
END IF
NEXT b 'закрываем сперва внутренний цикл
NEXT a 'затем внешний цикл
0
26.01.2018, 20:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2018, 20:49
Помогаю со студенческими работами здесь

Проверить наличие файлов Visual Basic (Сервис)
Необходимо чтобы служба или сервис постоянно проверял наличие файла на диске. Пробовал чере Dir() и...

Напишите рабочую программу free pascal
Можете помочь написать полный код программы,чтобы работал в паскале? Чему будет равно значение...

Программу нужно перекинуть с abc на free
Задание. 1.Написать программу, вычисляющую значение функции: (x^(1/3)/(x^3)*(tg(x)/(25), если...

Проверить наличие http basic authentication на веб-сервере
Есть IP адрес / хостнейм и порт. Нужно проверить, доступен этот адрес без пароля или требуется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru