Visual Studio
A family of Microsoft suites of integrated development tools for building applications for Windows, the web and mobile devices.
5,402 questions
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
//LEGGO NOME FILE DA PROCESSARE DALLA LINEA DI COMANDO
var input_file = "trial.dat";
int NYEARS = 32; //30
int NRUNS = 54; //54
//DICHIARO I RANGE DELLE VARIABILI INDIPENDENTI
var bus_types = new[] { "40ftdiesel", "60ftdiesel", "40ftcng", "60ftcng", "40fthybrid", "60fthybrid", "40ft250kWh", "40ft350kWh", "60ft650kWh", "40ft250kWhplugin", "40ft110kWhpantograph", "40ft110kWhwireless" };
var age_types = Enumerable.Range(0, 16).Select(x => x.ToString()).ToArray();
var year_types = Enumerable.Range(1, NYEARS).Select(x => x.ToString()).ToArray();
var run_types = Enumerable.Range(1, NRUNS).Select(x => x.ToString()).ToArray();
//PREPARO LA LISTA CHE CONTERRA LE RIGHE DELL'OUTPUT
List<string> all_output_lines = new List<string>();
//LEGGO IL FILE
var all_input_lines = System.IO.File.ReadAllLines(input_file);
for (int l = 0; l < all_input_lines.Length; l++)
{
var input_line = all_input_lines[l];
//SE NON TROVO IL MARKER PASSO ALLA RIGA SUCCESSIVA
if (!input_line.StartsWith("#MACRO "))
{
//COPIO LA RIGA DIRETTAMENTE SULL'OUTPUT
all_output_lines.Add(input_line);
//CONTINUE MI FA COMINCIARE L'ITERAZIONE SUCCESSIVA SENZA FINIRE QUELLA CORRENTE
continue;
}
if (input_line.StartsWith("#MACRO TABLE maintenance"))
{
//>> command = "maintenance.csv" ("40ft250kWh","40ft350kWh","60ft650kWh","40ft250kWhplugin") %columns% %invariant% %rows%
//PER LA TABELLA DI MAINENANCE HO NTABELLE PER IL TIPO DI BUS, RIGHE PER LA CORSA E COL X ETA'
var maintenance_lines = System.IO.File.ReadAllLines("mcosts.csv");
//LEGGO LE 4 TABELLE (ogni tabella è di tipo double[,], l'array è double[][,])
var kind_subtables = new double[bus_types.Length][,];
//Spezziamo il file in N tabelle che iniziano dalla riga in cui trovo il nome del Kind di autobus
for (int ki = 0; ki < bus_types.Length; ki++)
{
kind_subtables[ki] = new double[run_types.Length, age_types.Length];
var row_name = bus_types[ki];
var relevant_lines = maintenance_lines //DI TUTTE LE RIGHE LETTE DA MAINTENANCE.CSV
.SkipWhile(line => !line.Contains(row_name)) //SALTA TUTTE QUELLE CHE NN CONTENGONO IL NOME DEL TIPO DI BUS
.Skip(3) //SALTANE ALTRE 3 (NUMERO MAGICO)
.Take(run_types.Length) //PRENDINE N DOVE N è IL NUMERO DI CORSE DA CONSIDERARE
.ToArray(); //TRASFORMA IN ARRAY
for (int ri = 0; ri < run_types.Length; ri++) //PER OGNI RIGA RILEVANTE
{
var cells = relevant_lines[ri]
.Split(';') //LA DIVIDO USANDO IL CARATTERE ","
.Skip(1) //SALTO IL PRIMO
.ToArray(); ***AT THIS POINT I GOT THE ERROR (IN DEBUG)
Nome Valore Tipo
age_types[ai] error CS0103: Il nome 'ai' non esiste nel contesto corrente***
for (int ai = 0; ai < age_types.Length; ai++)
{
double parsed = 0;
if (cells[ai] == "-")
parsed = 0;
else if (!double.TryParse(cells[ai], out parsed))
throw new InvalidOperationException($"NON SONO RIUSCITO A TRASFORMARE IL TESTO {cells[ai]} IN NUMERO");
kind_subtables[ki][ri, ai] = parsed;
}
}
}
....
CAN YOU HELP ME?