помогите с задачами qbasic
| |
katalist5296 | Дата: Понедельник, 07 Ноября 2011, 21:24 | Сообщение # 1 |
using XNA + MONO = SuperGame
Сейчас нет на сайте
| Задача 1: прямоугольник , стороны которого выражены целыми числами m и n(m,n<100) ,разделен квадратами размером 1x1.Составить программу , которая находит число квадратов, пересекаемых диагональю прямоугольника( пересекает только тогда, когда делит его две части). пример: m=5 n=3 ответ:7 клеток
задача 2: два двоичных числа вводятся строкой своих цифр , причем первое содержит не более 72 знаков, а второе, меньшее, - не более 14. проверить делится ли первое число на второе. пример: первое число: 11100111000111000111111111 второе: 111 ответ: делится
Задача 3 Напишите программу, в которой вводится целочисленный массив из N элементов (линейный)и сортируется по следующему правилу: элементы упорядочиваются по возрастанию их последней цифры ; элементы с одинаковыми последними цифрами упорядочиваются по убыванию их значения вывести результат на экран.
пример: исходные данные N = 8 2367 4590 3475 2312 29 3 478 42
вывод: 4590 2312 42 3 3475 2367 478 29
желательно код но можно и алгоритм выполнения всем кто поможет +++ в репу
Сообщение отредактировал katalist5296 - Понедельник, 07 Ноября 2011, 21:35 |
|
| |
0x90 | Дата: Понедельник, 07 Ноября 2011, 22:28 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Ох блин, ктож эту геометрию помнит то 1 задача: Code if(m<n) swap(m,n) //m и n обмениваются значениями result = m+m%n //помоему в бейсике вместо % используется mod, могу ошибаться, поэтому оставлю так. Над остальными тоже подумаю.
Сообщение отредактировал 0x90 - Понедельник, 07 Ноября 2011, 22:50 |
|
| |
LunarPixel | Дата: Понедельник, 07 Ноября 2011, 22:48 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| 2 и 3 весьма элементарные задания. Писать код не буду, если кому то надо, пусть пишет.
2. переводим два введенных числа, по формуле переводим их в 10тичную систему счисления, делим одно на другое и проверяем наличие остатка (mod), и по условию его наличия или отсутствия выводим результат работы программы.
3. Создаем массив, циклом забиваем в него рандомные значения, потом проходим по массиву и через RIGHT$ (если не ошибаюсь), определяем правый символ. В том же цикле запускаем ещё один цикл по тому же массиву, и сравниваем последние символы всех элементов массива с последним символом текущего элемента во внешнем цикле. Ну и там же добавляем условие проверки, если последние числа двух элементов равны, то сравниваем сами элементы.
|
|
| |
0x90 | Дата: Понедельник, 07 Ноября 2011, 22:52 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Quote (LunarPixel) 2. переводим два введенных числа, по формуле переводим их в 10тичную систему счисления, делим одно на другое и Как такую строку(заметьте, строку, а не число) "010011110001" перевести в десятичную систему без излишних заморочек?
|
|
| |
LunarPixel | Дата: Понедельник, 07 Ноября 2011, 22:57 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| 0x90, кхм... создаем цикл по количеству символов в этой самой строке, и там выдираем из строки по одному символу на каждый проход цикла и заносим в формулу. По моему всё элементарно.
|
|
| |
0x90 | Дата: Понедельник, 07 Ноября 2011, 22:58 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Quote (LunarPixel) Создаем массив, циклом забиваем в него рандомные значения, потом проходим по массиву и через RIGHT$ У нас числа, а не строка. Последнюю цифру можно определить так: right_digit = num%10
|
|
| |
LunarPixel | Дата: Понедельник, 07 Ноября 2011, 23:00 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| 0x90, да, тут ошибся наверно... не работаю просто с qbasic
|
|
| |
0x90 | Дата: Понедельник, 07 Ноября 2011, 23:03 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Quote (LunarPixel) 0x90, да, тут ошибся наверно... не работаю просто с qbasic Да, я тоже с этой штуковиной в первый раз в жизни сталкиваюсь) Quote (LunarPixel) 0x90, кхм... создаем цикл по количеству символов в этой самой строке, и там выдираем из строки по одному символу на каждый проход цикла и заносим в формулу. По моему всё элементарно. Набросал тут алгоритм перевода, пожалуй вы правы.
|
|
| |
katalist5296 | Дата: Вторник, 08 Ноября 2011, 14:09 | Сообщение # 9 |
using XNA + MONO = SuperGame
Сейчас нет на сайте
| тема еще актуальна , блин завтра сдавать уже
|
|
| |
LunarPixel | Дата: Вторник, 08 Ноября 2011, 14:12 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| katalist5296, ну так алгоритм действий написан, остается только сопоставить с qbasic, в чем проблема?!
|
|
| |
katalist5296 | Дата: Вторник, 08 Ноября 2011, 14:17 | Сообщение # 11 |
using XNA + MONO = SuperGame
Сейчас нет на сайте
| LunarPixel, первую и вторую задачу, я сделал, а вот сортировка до доходит до меня , так что если можно по подробней
|
|
| |
0x90 | Дата: Вторник, 08 Ноября 2011, 15:02 | Сообщение # 12 |
участник
Сейчас нет на сайте
| Quote (katalist5296) тема еще актуальна , блин завтра сдавать уже Бейсик не знаю, напишу код второго задания на С с комментами: Code char first_string[80]; //первая строка введенная пользователем char second_string[80]; //вторая строка введенная пользователем int first_num = 0; //сюда будем записывать число после конвертации первой строки int second_num = 0; //то же самое, только для второй строки int len; //здесь будем хранить длину строки, которую конвертим в данный момент.
//считываем ввод пользователя в две наши строки scanf("%s",first_string); scanf("%s",second_string);
//собственно сам цикл конвертации len = strlen(first_string); for(int i = 0; i<len; i++) { first_num += pow(2,i)*(first_string[len-(i+1)]-0x30); //объясняется ниже }
//то же самое для второй строки len = strlen(second_string); for(int i = 0; i<len; i++) { second_num += pow(2,i)*(second_string[len-(i+1)]-0x30); //объясняется ниже }
if(first_num%second_num) //если остаток от деления равен ноль, то делится { printf("делится\n"); } else printf("не делится\n"); //иначе не делится.
Формула перевода из двоичной системы в десятеричную выглядит так: 2^разряд_числа*число Code first_num += pow(2,i)*(first_string[len-(i+1)]-0x30); i - разряд числа, first_string[len-(i+1)]-символ обрабатываемый в данный момент. ASCII код единицы = 0x31, нуля = 0x30, поэтому "1"-0x30 = 0x31-0x30 = 1, а "0"-0x30 = 0x30-0x30 = 0. Всё, устал Дальше сам, алгоритмов сортировки в сети навалом. Удачи с экзаменом.Добавлено (08.11.2011, 15:02) ---------------------------------------------
Quote (katalist5296) LunarPixel, первую и вторую задачу, я сделал, а вот сортировка до доходит до меня , так что если можно по подробней Блииин, зря надрывался я
Сообщение отредактировал 0x90 - Вторник, 08 Ноября 2011, 15:02 |
|
| |
LunarPixel | Дата: Вторник, 08 Ноября 2011, 15:06 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Вот тебе набросок для 3 задания, на языке N. Сам адаптируй под qbasic.
Code for (j=0; j<9; j+=1) { mas[j]=random(1000) }
for (i=0; i<9; i+=1) for (j=0; j<8; j+=1) {
a=последняя цифра числа mas[j] b=последняя цифра числа mas[j+1]
if a>b { sv=mas[j] mas[j]=mas[j+1] mas[j+1]=sv } if a=b if mas[j]>mas[j+1] { sv=mas[j] mas[j]=mas[j+1] mas[j+1]=sv } }
|
|
| |
katalist5296 | Дата: Вторник, 08 Ноября 2011, 17:36 | Сообщение # 14 |
using XNA + MONO = SuperGame
Сейчас нет на сайте
| всем спасибо все сделал, админы тему можно закрывать
|
|
| |
|