Przygotowanie kompilatora Visual Studio do konkursów z informatyki

Jak do tej pory w konkursach informatycznych królują rozwiązania pisane pod konsolę. Złożoność programu okienkowego utrudnia automatyzację sprawdzania rozwiązań. Stąd też do środowiska Visual Studio przy braku zainstalowanych rozszerzeń konsolowych dla języka C# lub C++ należy je pobrać i zainstalować.

Instalację dowolnych rozszerzeń standardowo wykonuje się po wyborze z menu opcji Rozszerzenia\ Zarządzaj rozszerzeniami

Zarzadzaj rozszerzeniami instalacja. Visual studio C#

W oknie dialogowym wyboru instalacji rozszerzeń wybieramy to co nas interesuje

okno dialogowe Zarzadzaj rozszerzeniami instalacja. Visual studio C#

Zatwierdzamy wybór i to tyle.

Wczytanie danych ze standardowego wejścia

W informatycznych zadaniach konkursowych dane wejściowe testujące rozwiązanie pobierane są z pliku. Wynik działania również jest wyeksportowany do pliku. Samodzielnie testując działanie naszego rozwiązania wykonujemy to korzystając z tak zwanego Wiersza polecenia.

Wiersz polecenia możemy uruchomić klawisz WINDOWS + cmd lub łatwiej z menu kompilator Visual Studio wybierając Narzędzia/ Wiersz polecenia/ Wiersz polecenia dla deweloperów

Wiersz polecenia. Visual studio C#

W oknie aplikacji Wiersz polecenia przechodzimy do folderu z kompilacją programu naszego rozwiązania (komenda cd). W folderze tym musimy również umieścić plik danych. Z reguły są to pliki tekstowe

Poniżej wykonanie polecenia cd Debug przeniesie aktywność do podfolderu Debug

Wiersz polecenia polecenie cd. Visual studio C#

Uruchomienie rozwiązania z równoczesnym wczytaniem danych pliku i wyświetleniem wyniku na ekranie monitora wygląda jak poniżej

Wiersz polecenia jak uruchomic program. Visual studio C#

Tu jest polecenie zapisane jako t2cpp.exe < dane.txt , czyli podajemy nazwę skompilowanego pliku rozwiązania plus znak mniejszości plus nazwa pliku danych.

Jeżeli wynik działania programu ma być wysłana do pliku to podajemy po znaku większości nazwę pliku wynikowego z rozszerzeniem

Wiersz polecenia odczyt i zapis pliku. Visual studio C#

Przykładowe rozwiązanie tego samego problemu w języku C# i C++

Naszym zadaniem jest wczytanie danych z pliku tekstowego, który zawiera informacje ile jest zdań oraz ile jest wierszy tablicy dwuwymiarowej. Rozwiązanie musi wyświetlić odczytane zdania, utworzyć tablicę dynamiczną, wpisać elementy do tablicy i obliczyć sumę elementów z każdego wiersza tablicy dwuwymiarowej

Postać pliku danych widoczny jest na poniższej ilustracji

Wiersz polecenia odczyt i zapis pliku danych. Visual studio C#

Rozwiązanie w C#

Kod rozwiązania zapisany w języku C#

Wskazówka:


using System;
using static System.Net.Mime.MediaTypeNames;

class CodeQuest
{
    static void Main(string[] args)
    {
        int ile = Convert.ToInt32(Console.ReadLine());
        for (int t = 0; t < ile; t++)
        {
            string text = Console.ReadLine();
            Console.WriteLine(text);
        }
        //rób tablicę, rozmiar i elementy odczytaj z pliku danych
        int n=Int32.Parse(Console.ReadLine());
        int[,] tab = new int[n,2];
        for(int i = 0; i < n; i++) {
            //znak separatora liczb to spacja
            string[] s=Console.ReadLine().Split(' ');
            for(int j = 0; j < s.Length; j++)
            {
                tab[i,j] = Convert.ToInt32(s[j]);
            }
        }
        //pokaz wczytana tablicę
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                Console.Write(tab[i, j] + " ");
            }
            Console.WriteLine();
        }
        //przykład sumowania elementów z kolumn w kolejnych wierszach tablicy
        for (int i = 0; i < n; i++)
        {
            Console.WriteLine(tab[i,0]+"+"+ tab[i, 1]+"="+(tab[i, 0]+ tab[i, 0]));
        }
    }
}

Rozwiązanie w C++

Rozwiązanie w języku C++

Wskazówka:


#include <iostream>
#include <string>

using namespace std;
int main()
{
	int k;
	cin >> k;
	string d;
	getline(cin, d);
	for (int t = 0; t < k; t++) {
		string text;
		getline(cin, text);
		cout << text << '\n';
	}
	int n = 0;
	//wczytaj rozmiar tablicy
	cin >> n;
	//przydziel rozmiar na wiersze tablict=y dynamicznej
	int** tab = new int* [n];
	for (int i = 0; i < n; i++) {
		//przydziel rozmiar na kolumny dla kazdego wiersza tablicy
		tab[i] = new int[2];
		cin >> tab[i][0] >> tab[i][1];
	}
	//pokaz wczytana tablicę
	for (int i = 0; i < n; i++)
		cout << tab[i][0] << " " << tab[i][1] << '\n';
	//przykład sumowania elementów z kolumn w kolejnych wierszach tablicy
	for (int i = 0; i < n; i++)
	{
		cout << tab[i][0] << "+" << tab[i][1]
			<< "=" << tab[i][0] + tab[i][1] << '\n';
	}
	return 0;
}

Wynik działania zapisanego do pliku wynik.txt pokazuje poniższa ilustracja

Wiersz polecenia testowanie rozwiązania. Visual studio C#
Układ okresowy- kod qr
Układ okresowy

Układ okresowy pierwiastków- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Alkomat- wirtualny test kod qr
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Taklarz- olinowanie stałe kod qr
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz