Модераторы: Hawk , Romeo , Absurd , DeeJayC , WinMain
drumer91
Сообщения: 8 Зарегистрирован: 20 ноя 2009, 22:29
20 ноя 2009, 22:54
помогите написать программу. которая бы считала количество слов в строке, слова разделены пробелами
вот я сам писал...
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Lord
{
public int kolvo(string s)
{
int i;
int n = 0;
for (i = 1; i <= s.Length; i++)
{
if (s == "")
break;
else
{
if ((i<=s.Length)&&(s[i]==' '))
continue;
if (s[i]!=' ')
{
if (i == s.Length)
{
n++;
break;
}
if ((i+1<s.Length)&&(s[i + 1] == ' '))
{
n++;
continue;
}
if ((i+1<s.Length)&&(s[i + 1] != ' '))
{
continue;
}
}
}
}
return (n);
}
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string ss;
int c;
Lord Max = new Lord();
Console.WriteLine("Введите строку");
ss = Console.ReadLine();
c = Max.kolvo(ss);
Console.WriteLine("Количество слов в строке = " + c);
Console.ReadLine();
}
}
}
выдаёт ошибку Индекс находился вне границ массива.
помогите пожалуйста
WinMain
Сообщения: 929 Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:
21 ноя 2009, 00:52
Слишком запутанный у тебя код. Вот как это делается...
Код: Выделить всё
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System.Collections.Generic;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System.Text;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]namespace[/color][/size][/color][/size][size=84] WordCount[/size]
[size=84]{[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]class [/color][/size][/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]Program[/color][/size]
[/color][/size][size=84]{[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] static [/color][/size][/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]void[/color][/size][/color][/size][size=84] Main([/size][size=84][color=#0000ff][size=84][color=#0000ff]string[/color][/size][/color][/size][size=84][] args)[/size]
[size=84] {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] int[/color][/size][/color][/size][size=84] nCount = GetWordCount(text);[/size]
[size=84][color=#008000][size=84][color=#008000] //[/color][/size]
[/color][/size][size=84][color=#2b91af][size=84][color=#2b91af] Console[/color][/size][/color][/size][size=84].WriteLine(nCount);[/size]
[size=84][color=#2b91af][size=84][color=#2b91af] Console[/color][/size][/color][/size][size=84].ReadLine();[/size]
[size=84] }[/size]
[size=84][color=#008000][size=84][color=#008000] // Подсчёт числа слов в строке...[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff] static [/color][/size][/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84] GetWordCount([/size][size=84][color=#2b91af][size=84][color=#2b91af]String[/color][/size][/color][/size][size=84] str)[/size]
[size=84] {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] int[/color][/size][/color][/size][size=84] nCount = 0;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] bool[/color][/size][/color][/size][size=84] alpha = [/size][size=84][color=#0000ff][size=84][color=#0000ff]false[/color][/size][/color][/size][size=84];[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] for[/color][/size][/color][/size][size=84] ([/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84] i = 0; i < str.Length; i++)[/size]
[size=84] {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] if[/color][/size][/color][/size][size=84] (str[i] == [/size][size=84][color=#a31515][size=84][color=#a31515]' '[/color][/size][/color][/size][size=84] || str[i] == [/size][size=84][color=#a31515][size=84][color=#a31515]'\t'[/color][/size][/color][/size][size=84])[/size]
[size=84] {[/size]
[size=84] alpha = [/size][size=84][color=#0000ff][size=84][color=#0000ff]false[/color][/size][/color][/size][size=84];[/size]
[size=84] }[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] else[/color][/size]
[/color][/size][size=84] {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] if[/color][/size][/color][/size][size=84] (alpha == [/size][size=84][color=#0000ff][size=84][color=#0000ff]false[/color][/size][/color][/size][size=84])[/size]
[size=84] {[/size]
[size=84] alpha = [/size][size=84][color=#0000ff][size=84][color=#0000ff]true[/color][/size][/color][/size][size=84];[/size]
[size=84] nCount++;[/size]
[size=84] }[/size]
[size=84] }[/size]
[size=84] }[/size]
[size=84][color=#0000ff][size=84][color=#0000ff] return[/color][/size][/color][/size][size=84] nCount;[/size]
[size=84] }[/size]
[size=84][color=#008000][size=84][color=#008000] // Текстовая строка для примера...[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff] static [/color][/size][/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]String[/color][/size][/color][/size][size=84] text = [/size][size=84][color=#a31515][size=84][color=#a31515]"Буря мглою небо кроет, вихри снежные крутя."[/color][/size][/color][/size][size=84];[/size]
[size=84]}[/size]
[size=84]}[/size]
Правда у меня строка задана статически прямо в тексте программы, но это не принципиально.
Newbie
Сообщения: 148 Зарегистрирован: 06 сен 2009, 19:45
21 ноя 2009, 23:39
что-то вы фигней страдаете господа)
Код: Выделить всё
string s = "234 234 23 s dwg re 34 3 tf gr rt et 35 3 sf";
string[] st = s.Split(' ');
int count = 0;
foreach (string _s in st)
{
count++;
}
Decoder
Сообщения: 308 Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow
22 ноя 2009, 14:22
Код: Выделить всё
int count = 0;
foreach (string _s in st)
{
count++;
}
Вместо этого наверно было бы проще так сделать...
st.GetLength();
Поумнеть несложно, куда труднее от дури избавиться.