СИ ШАРП!!!!!!!! Клиент купил N пирожков по цене k гривен. Сколько денег он заплатил? Ответ вывести с правильным окончание в слове «гривен», например: Клиент заплатил 21 гривну. Клиент заплатил 23 гривны. Клиент заплатил 27 гривен
LRSM
В условии сказано: "Ответ вывести с правильным окончание в слове «гривен»". В вашем решении вы не учли числа с 11 по 14, при которых слово «гривен» склоняется иначе, не как при числах 1..4 или 21..24. Также вы не учли тот факт, что цена обычно является вещественным числом.
LRSM
И ещё: в условии не сказано, что сначала вводится количество пирожков, а затем их цена. В условии вообще ничего про ввод не сказано. Поэтому, в вашем решении необходимо пояснить, что вводится сначала количество, а затем цена, тем более, что вы не используете те переменные, которые даны в условии.
vovapecherscky
Спасибо, что-то с утра невнимательный какой-то) Сейчас исправлю
if (S.Length > 1) if (S[^2] == '1') grn = "гривен";
Console.WriteLine($"Клиент заплатил {S} {grn}.");
Console.ReadLine();
Пример работы:
3 votes Thanks 5
PoMOGATORVOTVETAX
А чем можно заменить этот знак- ^??Просто в консольном приложение(NET Framework) его отмечают как недопустимый
LRSM
Это нововведение C# 8 — индексация с конца. И да, в .NET Framework работать не будет. Можете заменить на "S.Lenght - " или переходите .NET Core :)
LRSM
Если слишком длинная или не понятная строчка получается — можете написать так: string grn = ""; if (S[S.Length - 1] == '1') grn = "гривну"; else if (S[S.Length - 1] > '1' && S[S.Length - 1] < '5') grn = "гривны"; else grn = "гривен"; if (S.Length > 1) if (S[S.Length - 2] == '1') grn = "гривен";
LRSM
Тогда можно просто "string grn;" (без присваивания).
Answers & Comments
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
int count = Convert.ToInt32(Console.ReadLine());
int price = Convert.ToInt32(Console.ReadLine());
int sum = count * price;
char lastNum = Convert.ToString(sum)[Convert.ToString(sum).Length - 1];
Console.Write(sum+" ");
if (lastNum == '1')
{
Console.Write("гривна");
}
else if(lastNum == '2' || lastNum == '3' || lastNum == '4')
{
Console.Write("гривны");
}
else
{
Console.Write("гривен");
}
}
}
}
Также вы не учли тот факт, что цена обычно является вещественным числом.
Ответ:
Пример работы:
string grn = "";
if (S[S.Length - 1] == '1') grn = "гривну";
else if (S[S.Length - 1] > '1' && S[S.Length - 1] < '5') grn = "гривны";
else grn = "гривен";
if (S.Length > 1) if (S[S.Length - 2] == '1') grn = "гривен";