Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 12:46   #1
SeRhy
Форумчанин
 
Аватар для SeRhy
 
Регистрация: 19.10.2007
Сообщений: 168
Вопрос Найти количество слов которые заканчиваются на заданую букву. Си

Здравчтвуйте, у меня стоит задача найти количество слов в строке, которые заканчиваются на заданую букву. Я зделал так:

Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(){
int n = 0,m=0;
char str[80],str1[80],str2[80];
printf("vvedite stroky\n");
gets(str);
printf("vvedite bykvy\n");
gets(str1);
strcpy(str2,"");
while(1)
{
    while (str[n]==' '&& str[n]!= 0 ){
         n++;}
    while (str[n]!=' '&& str[n]!=0){
    strcpy(str2,str);                          
    n++;}
    if(str[n]=0) break;
    if(strcmp(str2,str1)==0)           
    m++;}
printf("%d",m);
getch();
}
Но чегото мой код не работает... Подскажите пожалуйста где я ошибся?
Зарание спасибо.

Последний раз редактировалось Stilet; 15.12.2010 в 13:18.
SeRhy вне форума Ответить с цитированием
Старый 15.12.2010, 12:49   #2
kenwood2010
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 97
По умолчанию

str[n]!=0 замени на str[n] != '\0'

это не помогает!
сейчас попробую написать побыстрому....
готово пост №5!
kenwood20072@rambler.ru ICQ: 701 302 135. (Программирование на C++, С. Решение задач по физике)

Последний раз редактировалось kenwood2010; 15.12.2010 в 13:47.
kenwood2010 вне форума Ответить с цитированием
Старый 15.12.2010, 12:50   #3
SeRhy
Форумчанин
 
Аватар для SeRhy
 
Регистрация: 19.10.2007
Сообщений: 168
По умолчанию

Зделал... Теперь програма зацикливается.

Я переделал так:
Код:
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    char s[30],l[2];
    int i,count=0; 
    cout << "Vvedit bykvy... \n";
    cin >> l[1];
    l[2]='\0';
    cout << "\nVvedit ryadok... \n";
    cin >> s[1];
    for (i=0;i<strlen(s);i++) {
       if ((s[i]==l[1]) && (s[i+1]==l[2])) { count++; } 
        }
    cout << "\nVvedeno " << count << " sliv scho zakinchyutsya na bykvy " << l[1] << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Уже не зацикливается, но чегото и не щитает

Последний раз редактировалось Stilet; 15.12.2010 в 13:19.
SeRhy вне форума Ответить с цитированием
Старый 15.12.2010, 13:10   #4
Блуд
Пользователь
 
Регистрация: 23.05.2010
Сообщений: 53
По умолчанию

Код:
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    char s[30],l[2];
    int i,count=0; 
    cout << "Vvedit bykvy... \n";
    cin >> l[1];
    l[2]='\0';
    cout << "\nVvedit ryadok... \n";
    cin >> s;
    for (i=0;i<strlen(s);i++) {
       if ((s[i]==l[1]) && (s[i+1]==' ')) { count++; } 
        }
    cout << "\nVvedeno " << count << " sliv scho zakinchyutsya na bykvy " << l[1] << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
ибо \0 это не пробел,а конец строки

Последний раз редактировалось Блуд; 15.12.2010 в 13:15.
Блуд вне форума Ответить с цитированием
Старый 15.12.2010, 13:25   #5
kenwood2010
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 97
По умолчанию

вот:
Код:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>


int main()
{
int x =0 ,y=0;
char ch;
char ch1;
int n = 0,m = 0;
char str[80]= "\0", str1[80]="\0", str2[80]="\0";
printf("vvedite stroky\n");
gets(str);
printf("vvedite bykvy\n");
cin>>ch;


for (int i = 0; i< strlen(str) + 1; i++)
  {
   while ((str[i] !=' ') && (str[i]!= '\0' ))
   {
    str2[x++] = str[i++];
   }
    for (int j=0;j<strlen(str2);j++)
  {
    ch1 = str2[j];
    if(ch==ch1) {m++;}
  }
  for(int k=0;k<strlen(str2);k++) {str2[k] = '\0'; x=0;}

 }
cout<<endl<<"Bukva: "<<ch<<" vstrechaetca "<<m<<" r.";
getch();
return 0;
}
kenwood20072@rambler.ru ICQ: 701 302 135. (Программирование на C++, С. Решение задач по физике)
kenwood2010 вне форума Ответить с цитированием
Старый 09.01.2011, 17:30   #6
Ganez
 
Регистрация: 25.10.2010
Сообщений: 8
По умолчанию

А можно переделать что бы находило слова начинающиеся на заданую букву...???
Ganez вне форума Ответить с цитированием
Старый 09.01.2011, 20:53   #7
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Ganez Посмотреть сообщение
А можно переделать что бы находило слова начинающиеся на заданую букву...???
Переделать можно , но лучше тебе самому попробовать понять программу и переделать . Полезней будет , если сам сделаешь .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 09.01.2011, 21:09   #8
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от kenwood2010 Посмотреть сообщение
вот:
...
У тебя программа немного не правильно работает . Я ее запустил и вот что получил .

--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 09.01.2011, 21:21   #9
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Я поправил программу . Да и не надо усложнять программы , которые сами по себе просты . Не надо использовать лишние переменные и массивы , которые не нужны

Код:

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>


int main()
{
	char ch;	
	int m = 0;
	char str[80]= "\0";
	printf("vvedite stroky\n");
	gets(str);
	printf("vvedite bykvy\n");
	cin>>ch;

	for (int i = 0; i < strlen(str); i++)
	{
		if (str[i] == ch && (str[i+1] == ' ' || str[i+1] == '\0' ))
		{
			m++;
		}
	}

	cout<<endl<<"Bukva: "<<ch<<" vstrechaetca "<<m<<" r.";
	getch();
	return 0;

}
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 09.01.2011, 21:29   #10
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Ganez Посмотреть сообщение
А можно переделать что бы находило слова начинающиеся на заданую букву...???
Вот программа по твоему вопросу :

Код:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>


int main()
{
	char ch;	
	int m = 0;
	char str[80]= "\0";
	printf("vvedite stroky\n");
	gets(str);
	printf("vvedite bykvy\n");
	cin>>ch;

	if (str[0] == ch)
	{	
		m++; 
	}

	for (int i = 1; i < strlen(str); i++)
	{		
		if (str[i] == ch && str[i-1] == ' ')
		{
			m++;
		}
	}

	cout<<endl<<"Bukva: "<<ch<<" vstrechaetca "<<m<<" r.";
	getch();
	return 0;

}
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти количество слов, начинающихся с заданной буквы С. Ganez Общие вопросы C/C++ 3 27.10.2010 19:48
Найти количество слов, содержащих цифры to-ot Фриланс 11 16.04.2010 17:56
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Дан массив с текстом. Как найти в нем количество разных слов. pascal1994 Помощь студентам 5 06.02.2009 11:50
скопировать во второй файл слова которые начинаются и заканчиваются на одну букву Екатерина А. Паскаль, Turbo Pascal, PascalABC.NET 2 23.12.2008 15:08