дано две строки. найти количество вхождений строки S2 в строку S1

//Короче. дано две строки. найти количество вхождений строки S2 в строку S1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
	class Program
	{
		static void Main(string[] args)
		{
			Console.WriteLine("Введите первую строку");
			string s1 = (Console.ReadLine());
			Console.WriteLine("Введите вторую строку");//Подстрока, количество вхождений которой нужно найти
			string s2 = (Console.ReadLine());
			int i = 0; // Числовая переменная, контролирующая итерации цикла
			int x = -1; // Так как метод IndexOf() возвращает "-1" если первое вхождение подстроки не найдено, то приходится использовать вспомагательную, вместо і, что б начать цикл
			int count = -1; // Записываем количество вхождений (итераций цикла)
		while (i != -1)
		{
			i = s1.IndexOf(s2, x + 1); // получаем индекс первого вхождения х+1 говорит, что начинать нужно с 0-го индекса, тоесть с буквы "П"
			x = i; // соответственно присваиваем номер индекса первого значения, что б потом (х+1) начать со следующего
			count++; // Увеличиваем на единицу наше количество
		}

			Console.WriteLine(count);
			Console.ReadLine();

		}
	}
}
//Но он сказал нельзя пользоваться .IndexOf

Чтобы самому реализовать проверку тебе надо:

  1. разбить строку на символы и начать перебирать их (назовём её первой)
  2. + разбить на символы (превратить в массив символов) ту строку, которая может быть входит в первую. (назовём её второй)
  3. Потом циклом перебираешь (можно использовать while) символы первой строки и сравниваешь каждый из них с первым символом второй строки -
  4. если первый символ второй строки и очередной символ первой строки совпадают - можно запустить внутренний цикл сравнения оставшегося куска второй строки (всех символов кроме первого - их сравнивай на условии входа во внутренний цикл - условие - это if ( )) и следующих символов первой.
  5. Если во внутреннем цикле происходит несовпадение - выходим из него во внешний цикл - и тот символ первой строки, что не совпал с очередным символом второй строки снова сравниваем с первым символом второй строки - но уже во внешнем цикле - иначе можно пропустить ситуацию типа:
    абваабв1234 // где ищем
    абв // что ищем

    из двух строк выше видно, что прокручивая внутренний цикл надо обязательно - при выходе во внешний начинать проверку
    с того символа, на котором произошла неудача сравнения во внутреннем цикле