Как я могу ввести этот код C++ в дартс

Я должен сделать этот код C++ в Dart, но я нахожу это действительно трудным. Я пытался смотреть видео Дартс и искать в Интернете, но безуспешно. Может ли кто-нибудь помочь мне? Это код:

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    if (n < 0) return 1;
    int sum = 0;
    int i = 0;
    while (i <= n) sum += i*i;
    cout << sum;
    return 0;
}

2 ответа

Что -то вроде

library x;

import 'dart:io';

void main(List<String> args) {
  int n;
  print('input a number');
  String input = stdin.readLineSync();
  n = int.parse(input);
  print('n: $n');
  if(n < 0) {
    exit(1);
  }

  int sum = 0;
  int i = 0;

  while(i <= n) {
    print(sum);
    sum += i * i;
  }

  print(sum);
}

Но не ожидайте многого. При достижении цикла while sum а также i равны 0. Таким образом, вы создали хороший бесконечный цикл, чтобы занять ваш компьютер;-)

Вы можете выполнить бит вычисления (сумма квадратов всех чисел от 1 до n включительно) с помощью рекурсивной функции, например:

int recur(int n) => (n > 0) ? (n * n) + recur(n - 1) : 0;

Тогда просто выяснить, как войти n и вывод recur(n), Это можно сделать с stdin.readLineSync а также print, Это было бы по следующим направлениям:

int recur(int n) => (n > 0) ? (n * n) + recur(n - 1) : 0;

void main( List<String> args ) {
    int inNum;
    String input = stdin.readLineSync();
    inNum = int.parse( input );
    if (inNum < 0) {
        exit( 1 );
    }
    print( recur( sum ) );
}

Просто будьте осторожны с большими входными значениями, я не уверен, что Дарт достаточно умен, чтобы выполнить хвостовую оптимизацию рекурсии. Если нет, может быть проблема с размером стека.

Другие вопросы по тегам