2014-01-25 2 views
1

Мне нужно сделать этот код на C++ в Dart, но мне это очень сложно. Я пробовал смотреть видео Дартс и искать в Интернете, но без успеха. Может ли кто-нибудь дать мне руку? Это код:Как я могу ввести этот код на 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; 
} 
+0

Возможно, вы захотите изменить цикл на 'while (i <= n) {sum + = i * i; i ++} ', чтобы избежать бесконечного цикла. – paxdiablo

ответ

3

что-то вроде

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); 
} 

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

+0

Большое спасибо Гюнтеру! Я бы никогда не смог этого сделать. Еще раз большое спасибо за вашу помощь! Ура! – user3126177

0

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

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)); 
} 

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

Смежные вопросы