Четверг, 18 Апреля 2024, 22:30

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Basic » помогите с задачами qbasic (срочно)
помогите с задачами 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
участник
Сейчас нет на сайте
Ох блин, ктож эту геометрию помнит то sad
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, кхм... создаем цикл по количеству символов в этой самой строке, и там выдираем из строки по одному символу на каждый проход цикла и заносим в формулу. По моему всё элементарно. smile

0x90Дата: Понедельник, 07 Ноября 2011, 22:58 | Сообщение # 6
участник
Сейчас нет на сайте
Quote (LunarPixel)
Создаем массив, циклом забиваем в него рандомные значения, потом проходим по массиву и через RIGHT$

У нас числа, а не строка. Последнюю цифру можно определить так:
right_digit = num%10
LunarPixelДата: Понедельник, 07 Ноября 2011, 23:00 | Сообщение # 7
старожил
Сейчас нет на сайте
0x90, да, тут ошибся наверно... не работаю просто с qbasic smile

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, в чем проблема?! smile

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.
Всё, устал killed Дальше сам, алгоритмов сортировки в сети навалом. Удачи с экзаменом.

Добавлено (08.11.2011, 15:02)
---------------------------------------------

Quote (katalist5296)
LunarPixel, первую и вторую задачу, я сделал, а вот сортировка до доходит до меня , так что если можно по подробней

Блииин, зря надрывался я surprised


Сообщение отредактировал 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
Сейчас нет на сайте
всем спасибо все сделал, админы тему можно закрывать

Форум игроделов » Программирование » Basic » помогите с задачами qbasic (срочно)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг