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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 12:31   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Еще студ вопросы

Занят тем что делаю курсач для друга. посмотрел на задание вроде бы все прозрачно ясно.

Задание такое: Есть txt файл. мы читаем его и все слова написанные латиницей заглавными буквами (с этого момента Термины), так вот, записываем эти термины в массив, соответственно так чтобы они не повторялись. (еще желательно создать массив в котором будут храниться ссылки на те места где каждый из терминов встречается первый раз)

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

Проблема 1: возникла сразу с чтением из txt файла.
я нашел кусок кода в каком то из учебников:

Код:
"char* term = new char[z];
FILE *txt=fopen("1.cpp","r"); // Чтение файла
for(i=0;char t=getc(fd1)!=EOF; i++); // Посимвольное чтение
{m=i;} // длинна файла     
char* txt = new char[m]; // инициализация массива под текст нужной длинны
for (i=0; i<=m+1; i++) { 
	txt[i]=getc(fd1);   // записывание текста в массив"
на что получил сразу две ошибки:
1) 'fd1' : undeclared identifier
2) 'txt' : redefinition; different basic types


Проблема 2: Для поиска терминов я написал такой вот незамысловатый код:
"
Код:
for (i=0; i<=m+1; i++) {   
	if (txt[i]>='A' && txt[i]<='Z') {  // ищем первую большую букву чтобы найти термин
		if  (txt[i+1]>='A' && txt[i+1]<='Z') {
			e=i;
		for (;txt[e]<='A' && txt[e]>='Z'; e++)  // находим конец термина
			if (test(i,e,term,txt)==0) {                    // если такого термина еще нет в массиве терминов
			*term=record(i,e,term,txt);                      // записываем                                		
			            }            }     }  }"
И сразу же столкнулся с такой проблемой что операция сравнения между двумя переменными типа char невозможно. видимо надо сделать преобразование типа, но как выполнить это так чтобы char лежащий в массиве txt остался char'ом после выполнения я не представляю...


Пока это не исправлю описывать какие проблемы возникли далее бесполезно.
Хей умные чуваки подскажите а? только подробно как нибудь а не просто кусками кода как обычно отвечают на подобные вопросы... ><

Последний раз редактировалось pinkiller; 01.11.2011 в 13:04.
pinkiller вне форума Ответить с цитированием
Старый 01.11.2011, 13:00   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Оформляйте код тэгом CODE, иначе его неудобно читать.
1) Вы уверены, что Вам следует делать курсовую работу для другого человека? Конечно, лучший способ разобраться в чём-то - объяснить это другому, но вероятность того, что в итоге где-то будет ошибка, весьма приличная.
2) 'fd1' : undeclared identifier переводится как "компилятор не нашёл выше по тексту определения символа fd1". Поскольку в цитате оного определения не видать, ничем кроме перевода помочь не могу.
3) 'txt' : redefinition; different basic types переводится как "символ txt определён повторно, как символ другого типа". Вообще-то, сообщение об ошибке обычно содержит указание на строку, в которой эта ошибка нашлась. Достаточно на неё посмотреть. К слову, наглядная демонстрация вреда кратких названий переменных.
4)
Цитата:
операция сравнения между двумя переменными типа char невозможна
Неправда. Хрустальный шар подсказывает мне, что второй фрагмент кода находится в той же области видимости, что и первый, но находится ниже. Есть такое понятие "индуцированной ошибки" - когда одна ошибка выше по тексту сбивает компилятор с толку, и в дальнейшем его сообщения утрачивают адекватность. Поэтому начинать надо с исправления первой ошибки и понятных ошибок, следующих за ней, а потом перекомпилировать.
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 13:05   #3
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
я нашел кусок кода в каком то из учебников
Нужно не куски кода в учебниках искать, а язык изучать !
An1ka вне форума Ответить с цитированием
Старый 01.11.2011, 13:06   #4
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

1) И другу помочь и самому попрактиковаться в программировании
2) что может означать fd1 и как следует его инициализировать?
pinkiller вне форума Ответить с цитированием
Старый 01.11.2011, 13:12   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Восславим MSDN, несущий свет истины незнающим.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еще о Range Trimbl Microsoft Office Excel 4 22.04.2011 15:32
Еще геометрия zumm Свободное общение 11 09.07.2010 21:49