C#

Не компилируется текст после переменной

Using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
// Compiler version 4.0, .NET Framework 4.5

namespace Dcoder
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Введите свои накопления");
string a = Console.ReadLine();
int s = Convert.ToInt32(a);
int f = 0;
for (int i = 0; f != 2000; i++)
{
f = (s*3)/100;
s = s+f;
}
Console.WriteLine("Вы достигните 2000 через "+i" Дней");
}
}
}
Unexpected sign "Дней"
очень странная конструкция
"Вы достигните 2000 через "+i" Дней"
строка плюс целое число ?? нет плюса и опять строка
как минимум после и напрашивается плюс и конвертация и самой и в стринг
Вова Сафонов
Вова Сафонов
53 119
Лучший ответ
Алик Уразметов Да.
Конвертация вроде не нужна, обычно же int корректно работает в строках
Алик Уразметов Окей всё работает, просто плюс надо было добавить. Спасибо
В коде у вас отсутствует + после i и это вы по указанию другого ответившего поправили, НО
Shporgalka Nope, а вы уверены, что работает правильно? с каких пор деление на 100 всегда дает целое число? У вас будет идти неявное преобразование к целому с отбрасыванием дробной части. B s, и f должны быть float и отбрасываться должна дробная часть после 2 знаков (копейки)
Кроме того можно обойтись и без f вообще, если у вас ежедневно начисляется 3% то размер нового вклада после ежедневно начисленных процентов будет считаться как:
s *=1.03
непонятен так же параметр прерывания цикла - сейчас у вас по сути это не достижение вкладом 2000 for (int i = 0; s<2000; i++), а достижение его ежедневного прироста в 2000 for (int i = 0; 0.03*s<2000; i++). А в вашем текущем написании у вас вообще может бесконечный цикл образоваться, т. к. f - ежедневный прирост может вообще никогда не оказаться равным 2000

Еще момент, если 3% это не ежедневный прирост, а годовой, то тут вам нужно уточнить что есть год для банка и поделить 3 еще на количество дней в банковском году. либо заменить в выводе слово "Дней" на "Лет"
Алик Уразметов Не то чтобы это было связанно с банком. Проблему безконечный цикл я не встречал, сейчас код уже доработан и большинство проблем указанных здесь в нём нету.
Деление на 100 давало целое число ибо за s обычно пралось число больше 30.000, то есть при умножении на 3 и делении на 100 было примерно 1000.
Спасибо конечно за подробный разбор моего, не очень, грамотного кода