Конвертировать с C++ на C#. Джек на A380

Узнай цену своей работы

Формулировка задачи:

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <map>
#include <stack>
#include <algorithm>
#include <bitset>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
 
#define F first
#define S second
#define ll long long
#define len length()             
#define sqr(x) x*x
#define pb push_back
#define mp make_pair
#define sz(x) ((int) (x).size())
#define all(x) x.begin(), x.end()
#define allr(x) x.rbegin(), x.rend()
#define bp(x) __builtin_popcount(x)            
#define INF numeric_limits<long long int>::max()
#define frp freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#define forit(it, s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it++)
 
const int maxn = (int)1e6;
const int mod = (int)1e9 + 7;
 
using namespace std;
 
int StoI(string s){
    int res=0;
    for(int i=0; i < s.len; i++){
        res=res*10+(s[i]-'0');
    }   
    return res;
}
           
string s;
string digit,word;
int digits;
 
main(){
    cin>>s;    
    for(int i=0; i < s.len; i++){
        if(isdigit(s[i])){
            while(isdigit(s[i])){
                digit+=s[i];
                i++;
            }
            i--;
        }else{
            word+=s[i];
        }
    }
    digits=StoI(digit);                       
    for(int i=0; i < s.len; i++){
        if(digits < 3){
            switch(word[i]){
                case 'A':case 'a':puts("window");break;
                case 'D':case 'd':puts("window");break;
                case 'B':case 'b':puts("aisle");break;
                case 'C':case 'c':puts("aisle");break;
            }
        }
        if(digits >= 3 && digits <= 20){
            switch(word[i]){
                case 'A':case  'a':puts("window");break;
                case 'F':case  'f':puts("window");break;
                case 'B':case  'b':puts("aisle");break; 
                case 'D':case  'd':puts("aisle");break;
                case 'E':case  'e':puts("aisle");break;
                case 'C':case  'c':puts("aisle");break;
            }
        }
        if(digits >= 21 && digits <= 65){
            switch(word[i]){
                case 'A':case  'a':puts("window");break;
                case 'K':case  'k':puts("window");break;
                case 'G':case  'g':puts("aisle");break;     
                case 'D':case  'd':puts("aisle");break;
                case 'H':case  'h':puts("aisle");break;
                case 'C':case  'c':puts("aisle");break;
                case 'B':case  'b':puts("neither");break;
                case 'E':case  'e':puts("neither");break;
                case 'F':case  'f':puts("neither");break;
                case 'J':case  'j':puts("neither");break;
            }
        }
        if( digits > 65)
            puts("neither");break;
    }

    return 0;
}
Заранее спасибо.

Решение задачи: «Конвертировать с C++ на C#. Джек на A380»

textual
Листинг программы
using System;
 
class timus1893
{
  static String[] w = {"window", "neither", "aisle"};
  static int[][] t = { 
    new int [] {0,2,2,0}, 
    new int [] {0,2,2,2,2,0}, 
    new int [] {0,1,2,2,1,1,2,2,1,0} 
  };
 
  static void Main()
  {
    String i = Console.ReadLine();
    int iLast = i.Length - 1;
    int n = Int32.Parse(i.Remove(iLast));
    int m = Convert.ToByte(i[iLast]) - Convert.ToByte('A');
    if (m > Convert.ToByte('I') - Convert.ToByte('A')) m--;
    if (n < 3)
      Console.WriteLine(w[t[0][m]]);
    else if (n < 21)
      Console.WriteLine(w[t[1][m]]);
    else
      Console.WriteLine(w[t[2][m]]);
  }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы