Member 13937395 Ответов: 3

Как мне преодолеть ошибку времени выполнения для этого?


Сравнение Банков
описание проблемы
Есть два банка: Банк А и Банк В. Их процентные ставки различны. Вы получили предложения от обоих банков с точки зрения годовой процентной ставки, срока владения и изменения процентной ставки в течение всего срока владения.

Вы должны выбрать предложение, которое стоит вам меньше всего процентов, и отклонить другое.

Сделайте расчет и сделайте мудрый выбор.

Погашение кредита происходит с ежемесячной периодичностью, а приравненный к нему ежемесячный взнос (EMI) рассчитывается по формуле, приведенной ниже :

EMI = loanAmount * monthlyInterestRate /

( 1 - 1 / (1 + monthlyInterestRate)^(numberOfYears * 12))

Ограничения
1 <= P <= 1000000

1 <=T <= 50

1<= N1 <= 30

1<= N2 <= 30

входной формат
Первая строка : P – основной капитал (сумма кредита)

Вторая строка : T – Общее время пребывания в должности (в годах).

Третья строка : N1-количество слябов процентных ставок за данный период банком А. Первый сляб начинается с первого года, а второй сляб начинается с конца первого сляба и так далее.

Следующая строка N1 будет содержать процентную ставку и их период.

После N1 строк мы получим N2, а именно: количество плит, предлагаемых вторым банком.

Следующие строки N2-это количество слябов процентных ставок за данный период по банку B. Первый сляб начинается с первого года, а второй сляб начинается с конца первого сляба и так далее.

Период и курс будут разделены одним пробелом.

Выход
Ваше решение – либо банк а, либо банк В.


Объяснение
Пример 1

Ввод

10000

20

3

5 9.5

10 9.6

5 8.5

3

10 6.9

5 8.5

5 7.9

Выход

Банк Б

Пример 2

Ввод

500000

26

3

13 9.5

3 6.9

10 5.6

3

14 8.5

6 7.4

6 9.6

Выход

Банк Б

Что я уже пробовал:

//This is The Coding Area
#include <assert.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
  long int p;
  int  t,n1,n2,i,j;
  scanf("%ld%d%d%d",&p,&t,&n1,&n2);
  int pea[n1],peb[n2];
  float ra[n1],rb[n2],ai,bi,a = 0,b = 0;
  for(i=0;i<n1;i++)
  {
    scanf("%d%lf",&pea[i],&ra[i]);
    a = a+(p*pea[i]*ra[i]);
  }
  for(j=0;j<n2;j++)
  {
     scanf("%d%lf",&pea[i],&rb[i]);
     b = b+(p*peb[j]*rb[j]);
  }
  ai = a/(100);
  bi = b/(100);
  if(ai<bi)
  {
    printf("Bank A");
  }
  else
  {
    printf("Bank B");
  }
 return 0;
}


это мой код для вышеуказанной проблемы
я получаю ошибку времени выполнения
не могли бы вы дать какие-нибудь предложения, чтобы избежать ошибки во время выполнения?

OriginalGriff

И что же это за ошибка во время выполнения, которую вы получаете?
Когда ты его получишь?
Что вы вводите, чтобы получить его?

Member 13937395

компиляция прошла успешно
но я получаю ошибку времени выполнения

OriginalGriff

Вы хоть представляете, сколько существует возможных типов ошибок во время выполнения?
Грузы, и грузы. И причин для каждой из них столько же, сколько и ошибок!

Итак, объясните нам точно, что вы получаете, и когда вы получаете это: любые сообщения об ошибках, какие строки он говорит, что они находятся, что вы сделали, чтобы вызвать это.

В данный момент вы сломались в середине нигде, позвонил в гараж, сказал "Моя машина сломалась" и положил трубку. Как долго, по-вашему, вы будете ждать, когда гараж появится с нужным кусочком, чтобы починить его, учитывая, что они не знают, что случилось с машиной, что это за машина, или даже где, черт возьми, вы находитесь?
И это то, что вы сказали нам до сих пор: "мой код сломался".

Помогите нам помочь вам!

Patrice T

и вы знаете сообщение об ошибке во время выполнения и положение ?

3 Ответов

Рейтинг:
2

Richard MacCutchan

Вы не можете получить ошибки во время выполнения, так как этот код не будет компилироваться. Размеры массивов в языке Си должны быть определены во время компиляции, поскольку они не являются динамическими. Если вам нужен динамический массив, то вам нужно использовать функция malloc[^] функция для их создания во время выполнения.


Member 13937395

Я также выполнил этот код в Devc++. Его составление

Richard MacCutchan

Ну, вы все еще не удосужились сказать нам, в чем ваша проблема.

Richard MacCutchan

Что такое сообщение об ошибке?

OriginalGriff

Удивительно, но это зависит от компилятора.
Попробуйте этот код:

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    int n;
    scanf("%d", &n);
    int a[n];
    printf("%d\n", sizeof(a));

    return 0;
}
на этот раз:
https://www.onlinegdb.com/online_c_compiler
Он компилируется и работает.

Richard MacCutchan

Реализация функции C++ в компиляторе C ... ту-ту.

OriginalGriff

Я их не пишу! :смеяться:

Рейтинг:
1

KarstenK

Используйте отладчик, чтобы найти проблему в вашем домашнем задании. На первом этапе я бы сделал несколько подробных операций ввода-вывода на консоли, чтобы убедиться, что данные введены правильно.

В целях отладки я бы распечатал каждое отсканированное значение, чтобы проверить правильность работы.

Я предполагаю, что вы неправильно сканируете входные данные или ваши массивы не связаны. Типичная работа называется "отладка"...


Рейтинг:
0

Richard MacCutchan

scanf("%d%lf",&pea[i],&rb[i]);
b = b+(p*peb[j]*rb[j]);

Вы считываете значение в элемент системы. pea массив, но с использованием элемента peb в ваших расчетах.