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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 13:15   #1
probationer
 
Регистрация: 09.03.2012
Сообщений: 3
По умолчанию Проблема с кодом. Выдается ошибка несоответствия типов

Здравствуйте! Необходимо написать программу, которая считывает тексат из файла, находит слова, начинающиеся и заканчивающися на одну букву и выводит сами эти слова и их количество.
Вот какой код у меня получился:

Код:
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <cstring>
#include <windows.h>
#include <tchar.h>
#include <conio.h>
#include <fstream>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
 {
char TXT[1024];
int b=0;
char pch;
char instr2;
ifstream F;
F.open("D:\pro\1.txt");
if (F)
{
while (!F.eof())
{
F>>instr2;
cout<<instr2<<"\t";
const char *tokens = " \t\n\v,.;!?()[]{}-\"'";
char *pch = strtok(instr2, tokens);
	while(pch) {
		if((strlen(pch) > 1) && (* pch==pch[strlen(pch)-1])) {
			CharToOem("Слово - ", TXT);
			cout << TXT;
			CharToOem(pch, TXT);
			cout << TXT;
			CharToOem(" - начинается и заканчивается на одну букву", TXT);
			cout << TXT << endl;
			b++;  }

		}
		pch = strtok(NULL, tokens);
	}
	 CharToOem("Всего таких слов ",TXT);
cout <<TXT<< b;}
F.close();
}

  getch();
Выскакивают следующие ошибки:
[C++ Error] Unit1.cpp(27): E2034 Cannot convert 'int' to 'char *'
[C++ Error] Unit1.cpp(27): E2342 Type mismatch in parameter '__s1' (wanted 'char *', got 'char')

Помогите,пожалуйста,их исправить



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.12.2012 в 13:31.
probationer вне форума Ответить с цитированием
Старый 14.12.2012, 13:58   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

strtok первым параметром ожидает строку, а не символ
p51x вне форума Ответить с цитированием
Старый 14.12.2012, 14:01   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
strtok(instr2, tokens);
в этой функции типы аргументов проверьте. Гуголь (ибо ничего иного под рукой сейчас нет) дает такое:

Цитата:
char *strtok(char *str1, const char *str2);

Функция strtok() возвращает указатель на следующую лексему в строке, адресуемой параметром str1. Символы, образующие строку, адресуемую параметром str2, представляют собой разделители, которые определяют лексему. При отсутствии лексемы, подлежащей возврату, возвращается нулевой указатель.
У Вас же instr2 объявлен как обычный char. Это что касается второй ошибки.

И еще - в константе вместо символа ' вроде бы должно быть \'
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 14.12.2012 в 14:05.
Sciv вне форума Ответить с цитированием
Старый 15.12.2012, 19:40   #4
probationer
 
Регистрация: 09.03.2012
Сообщений: 3
По умолчанию

Проблема в том, что вот в таком виде-без считывания текста из файла, программа работает

Код:
int _tmain(int argc, _TCHAR* argv[])
{char TXT[1024];
int b=0;

const char* tokens = " \t\n\v,.;!?()[]{}-\"'";
   char instr2[] = "В этой строке два слова, являющиеся, акронимами (одно точно есть)!";

	char* pch = strtok(instr2, tokens);
	while(pch) {
		if((strlen(pch) > 1) && (*pch==pch[strlen(pch)-1])) {
			CharToOem("Слово - ", TXT);
			cout << TXT;
			CharToOem(pch, TXT);
			cout << TXT;
			CharToOem(" - начинается и оканчивается на одну букву", TXT);
			cout << TXT << endl;
			b++;

		}
		pch = strtok(NULL, tokens);
	}
	 CharToOem("Всего таких слов ",TXT);
	 cout <<TXT<< b;

  getch();
}

А со считыванием из файла проблемы!

Последний раз редактировалось probationer; 15.12.2012 в 19:46.
probationer вне форума Ответить с цитированием
Старый 15.12.2012, 22:55   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Проблема в том, что вот в таком виде-без считывания текста из файла, программа работает
А то, что здесь instr2 у вас СТРОКА, а не СИМВОЛ как в первом примере вас нисколько не заинтересовало? Включайте голову хоть иногда, а?..
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка несоответствия типов после подключения System и Classes Alex Cones Общие вопросы Delphi 9 26.11.2017 10:36
Выдается ошибка при компиляции Алексей_2012 Общие вопросы Delphi 4 16.11.2012 18:06
Проблема с использованием динамической памяти, ошибка с конвертом типов данных Jawner C++ Builder 5 25.04.2012 12:01
проблема с кодом!ошибка! silverandsilver Помощь студентам 16 16.04.2012 00:29
Проблема с кодом в VB, ошибка в вычислении факториала Богдан Величко Помощь студентам 1 10.04.2011 22:50