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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 16:36   #1
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию Вывод слов у которых в iой позиции одна и та же буква( язык C)

Вывести из текста на консоль слова, у которых в i-й позиции располагается одна и та же буква. В исходном тексте поменять местами первую пару таких слов и вывести результат на консоль.
Не могу вывести слова одной и той же буквой=(
Вот мой код:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int i,op;
char *text = "text.txt", *text_out = "text_out.txt";
char textString[], *lexemsPtr, sym;
int main()
{
/*Îòêðûâàåì ôàéëû*/
FILE *inFile;
inFile = fopen(text, "rt+");
if(inFile == NULL)
{
printf("Error Open File %s!", text);
return 1;
}
FILE *outFile;
outFile = fopen(text_out, "wt+");
/*âûòàñêèâàåì èç ôàéëà òåêñò*/
fgets(textString, 1000, inFile);
printf("%s", textString);
printf("Enter number symbol: ");
scanf("%d", &op);
printf("Enter symbol: ");
scanf("%c", &sym);
/*ðàçáèâàåì òåêñò íà ñëîâà*/
lexemsPtr=strtok(textString," ");
if(lexemsPtr[op]==sym )
printf("%s\n", lexemsPtr);
while(lexemsPtr!=NULL)
{
if(lexemsPtr[op]==sym){ 
printf("%s\n", lexemsPtr);}
lexemsPtr=strtok(NULL," ");
}

/*çàêðûâàåì ôàéëû*/
fclose(inFile);
fclose(outFile);
getchar();
getchar();
return 0;
}
NNAndr вне форума Ответить с цитированием
Старый 13.01.2013, 19:03   #2
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Не первый раз уже перечитываю учебник, не понимаю почему неверно.
NNAndr вне форума Ответить с цитированием
Старый 13.01.2013, 19:50   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
у которых в i-й позиции располагается одна и та же буква.
Как в некой позиции строки можно расположить несколько разных букв?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.01.2013, 20:07   #4
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Вывести например все слова у которых 2ой буквой стоит буква "а", затем все у которых буква "b"
NNAndr вне форума Ответить с цитированием
Старый 13.01.2013, 22:34   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хорошо. Отладчиком проходил? Что он показывает? Где как ты думаешь неточность?
Иначе вот тебе ссылка:http://www.programmersforum.ru/showthread.php?t=214478
Здесь после получения очередного слова поправь условие на анализ второго символа, и если он особенный - выводи его.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.01.2013, 23:12   #6
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Ни чем я не проходил... я первокурсник пока в этом всём бум бум...
А в теме где код С++ я что-то вообще мало что понял, я с++ не изучал ещё.
Мне бы просто кто-нибудь сказал что не так... и сказал что нужно сделать. Ну или хотя бы навести на мысль. Сессия идёт а я всё с этой прогой занимаюсь непристойностями.. =\
NNAndr вне форума Ответить с цитированием
Старый 13.01.2013, 23:47   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В целом программа логичная.
Именно поэтому и намекнул на отладчик. Си под рукой нет но и криминала не вижу в примере. F10 тебе в помошь если VS используешь. Пошаговка должна показать где именно ты ошибаешся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.01.2013, 01:02   #8
NNAndr
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 17
По умолчанию

Всё отладил, работает поиск, но есть один нюанс... если брать i=3 то он выводит слова to,if в тесте они расположены так (**текст** to get*** текст) т.е. функция считает первую букву слова get как 4букву слова to, как сделать так что бы такого не происходило?
Чуть поправленный код
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 2000

int i,op;
char *text = "text.txt", *text_out = "text_out.txt";
char textString[SIZE], *lexemsPtr, sym[SIZE];
int main()
{
/*Îòêðûâàåì ôàéëû*/
FILE *inFile;
inFile = fopen(text, "rt+");
if(inFile == NULL)
{
printf("Error Open File %s!", text);
return 1;
}
FILE *outFile;
outFile = fopen(text_out, "wt+");
/*âûòàñêèâàåì èç ôàéëà òåêñò*/
fgets(textString, 1000, inFile);
printf("%s", textString);
printf("Enter number symbol: ");
scanf("%d", &op);
printf("Enter symbol: ");
scanf("%s", &sym[0]);
/*ðàçáèâàåì òåêñò íà ñëîâà*/
lexemsPtr=strtok(textString," ");
while(lexemsPtr!=NULL)
{
if(lexemsPtr[op]==sym[0])
printf("%s\n", lexemsPtr);
lexemsPtr=strtok(NULL," ");
}

/*çàêðûâàåì ôàéëû*/
fclose(inFile);
fclose(outFile);
getchar();
getchar();
return 0;
}
NNAndr вне форума Ответить с цитированием
Старый 14.01.2013, 09:14   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if(strlen(sym)>op && lexemsPtr[op]==sym[0])
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
количество слов, первая и последняя буква которых совпадают gred Помощь студентам 4 13.11.2014 13:56
Определить количество слов, в которых буква 'П' встречается хотя бы один раз. edgeks Помощь студентам 0 18.11.2012 15:34
Дан файл f. Найти самое длинное слово среди слов, вторая буква которых есть 'e'. Работа с файлами. Делфи 7. Fatalita Помощь студентам 0 30.05.2012 04:24
Одна буква в одной ячейке Palantir Microsoft Office Excel 8 10.12.2009 19:09