Определить в каком подъезде и на каком этаже находится квартира с заданным номером K - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Номер квартиры Многоквартирный дом имеет N квартир, P подъездов и Q этажей, причем на каждом этаже каждого подъезда имеется одинаковое количество квартир. Определить в каком подъезде и на каком этаже находится квартира с заданным номером K. Технические условия Входные данные В единственной строке файла записаны значения N, P, Q, K. 1 ≤ K ≤ N ≤ 1000, P*Q ≤ N. Выходные данные В единственную строку файла нужно вывести номер подъезда и этаж, на котором находится квартира с номером K.
Ребят, помогите плз, 3 теста не проходит. Не понимаю, в чём дело. Вот мой код:
#include <stdio.h>
int main()
{
   int n,p,q,k,g,i,kk,kp,e;
 
   scanf("%d %d %d %d", &n, &p, &q, &k);
 
   kk=(n/p)/q;
   kp=n/p;
 
    g=k;
    i=1;
    while(g>kp)
    {
        g=g-kp;
        i++;
    }
        printf("%d ", i);
 
    e=k%kp;
    i=1;
    while(e>kk)
    {
        e=e-kk;
        i++;
    }
    printf("%d\n", i);
   return 0;
}

Решение задачи: «Определить в каком подъезде и на каком этаже находится квартира с заданным номером K»

textual
Листинг программы
#include <stdio.h>
 
int main(void) {
    unsigned    apptsPerHouse,  // квартир в доме
                porchsPerHouse, // подъездов в доме
                floorsPerPorch, // этажей в подъезде
                apptsPerPorch,  // квартир в подъезде
                apptsPerFloor,  // квартир на этаже
                apptNumber,     // номер квартиры
                porchNumber,    // номер подъезда
                floorNumber;    // этаж
            
    if ( scanf("%u %u %u %u", &apptsPerHouse, &porchsPerHouse, &floorsPerPorch, &apptNumber) == 4 ) {
        apptsPerPorch = apptsPerHouse / porchsPerHouse;
        apptsPerFloor = apptsPerPorch / floorsPerPorch;
        porchNumber = ( apptNumber / apptsPerPorch ) + ( ( apptNumber % apptsPerPorch ) ? 1 : 0 );
        floorNumber = ( apptNumber - ( apptsPerPorch * ( porchNumber - 1 ) ) ) / apptsPerFloor + ( ( apptNumber % apptsPerFloor ) ? 1 : 0 );
            
        printf("%u %u\n", porchNumber, floorNumber);
    }
    
    return 0;           
}

Объяснение кода листинга программы

В этом коде определены следующие переменные:

  1. apptsPerHouse (количество квартир в доме)
  2. porchsPerHouse (количество подъездов в доме)
  3. floorsPerPorch (количество этажей в подъезде)
  4. apptsPerPorch (количество квартир в подъезде)
  5. apptsPerFloor (количество квартир на этаже)
  6. apptNumber (номер квартиры)
  7. porchNumber (номер подъезда)
  8. floorNumber (номер этажа) С помощью функции scanf считываются значения переменных apptsPerHouse, porchsPerHouse, floorsPerPorch и apptNumber. Затем вычисляются значения переменных apptsPerPorch и apptsPerFloor. Далее вычисляются значения переменных porchNumber и floorNumber. И наконец, с помощью функции printf выводятся значения переменных porchNumber и floorNumber. Если ввод данных осуществляется правильно и введенный номер квартиры соответствует одному из подъездов и этажей, то программа выведет номер подъезда и номер этажа, на котором находится квартира.

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы