Форум программистов, компьютерный форум CyberForum.ru

Разобраться в некоректности программы!(англо-русский словарь лин. списком) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разобраться с кодом! http://www.cyberforum.ru/cpp-beginners/thread386206.html
Помогите разобраться с кодом, так как си было давно, а щас вот вспоминаю. Не могу идентифицировать некоторые функции, да и ваще чё происходит по строкам, кому не сложно оставьте коменты на код) буду признателен! а так ваще мне соль тут понятна (поиск файлов с директории определённого формата, запись в структуру) ) std::vector<std::string> vFiles; typedef struct _BASE_RECORD { char...
C++ Софтварный замер напряжения Здравствуйте. Прошу помочь с одной несколько странной проблемой. Поискал в интернетах - ничего толком не увидел. Есть задача - сделать генератор случайного ключа для алгоритма шифрования. Делать на основе математической функции не хочется, решил попытаться реализовать замер напряжений с датчиков на мат.плате и на основе этих чисел уже делать ключ. Вопрос: если ли для С/С++ библиотеки, с помощью... http://www.cyberforum.ru/cpp-beginners/thread386203.html
Идея тренажера на составление выражений на языке C/C++ C++
Здравствуйте, форумчане! Затрудняюсь с выбором раздела форума, где разместить свой вопрос, пусть будет здесь. Возникла необходимость придумать некое задание, которое бы проверяло уровень знаний тестируемого на предмет понимания и составления выражений на языке С/С++ с использованием массивов и, возможно, структур. Также нужно придумать варианты возможных подсказок, в случае, если у тестируемого...
C++ Одномерный массив, проблемы
Помогите с программой, пожалуйста. Не знаю как составить алгоритм к задаче такого типа: Число назовем массивным, если оно записано в виде a^n, что означает возведение числа a в степень n. Вам требуется сравнить два массивных числа ab и cd, записанных в формате “<основание>^<экспонента>”. Из двух заданных массивных чисел следует вывести большее. Технические условия Входные данные
C++ Вычисления максимального элемента массива с явной специализацией для строк http://www.cyberforum.ru/cpp-beginners/thread386179.html
Здравствуйте! Всех студентов с праздником! Возможно тема заезженная! Возникла такая проблемка, нужно вычислить максимальный элемент одномерного массива с явной специализацией шаблонной функции для строк (тип char*). Как найти максимум из трех строк, то тут проблем не может быть!
C++ Как исправить ошибки C2065, C2109 в этой программе? error C2065: is: необъявленный идентификатор error C2109: для индекса требуется массив или указатель что это за ошибки и как их исправить задача, кстати из этой программы # include "iostream" # include <math.h> # include "iomanip" подробнее

Показать сообщение отдельно
BukTOP_10
1 / 1 / 0
Регистрация: 05.10.2011
Сообщений: 13
17.11.2011, 23:01  [ТС]     Разобраться в некоректности программы!(англо-русский словарь лин. списком)
да,первое исправил сразу,заметил чуть позже,по второму не понял до сих пор ,а третье top-у присваивается NULL,в 24 строке)
посмотрите пожалуйста ещё,очень буду вам признателен
Вот подисправленный вариант:
Код
#include<iostream>
#include<fstream>
#include <windows.h>

struct LE
{
  char text[30];
  struct LE *next;
};

using namespace std;

char bufRus[256];
 
char* rus(const char* text)
{
      CharToOem(text,bufRus);
      return bufRus;
}

LE* CreateLinSpis()
{
    LE *top,*p;
    top=NULL;
    
    ifstream fileIn;
    fileIn.open("database.txt");
	if(!fileIn.is_open()){   cout << "Error opening file"<< endl;
                              fileIn.close();
                              exit(1);
                          }
    while(!fileIn.eof())
    {
            p=new LE;
            fileIn.getline(p->text,30); //извлекаем слова построчно
            
            p->next=top; top=p;         
            
   } 
    fileIn.close();
    return p;
} 

void PrintLinSpis(LE *p)
{
	  while(p)
	  {
			  cout<<rus(p->text)<<endl;
			  p=p->next;
	  }
}

void DestructLinSpis(LE *p)
{
	LE *next;
	while(p)
	{
		next=p->next;
		delete []p;
		p=next;
	}
} 

int Find(LE *p)
{
    char word[30]={'\0'},*buf1=NULL,*buf2 = NULL;
    bool find=false;
    
    cout<<"Enter word to translate:";
    cin.getline(word,30); 
    
    while(!(&p))
    {
      buf1=strtok(p->text,"-");
      buf2=strtok(NULL," ");
      buf1=rus(buf1);
      if (*buf1==*word && strlen(buf1)==strlen(word))
      {
 
         cout << word << " = " << rus(buf2) << endl;
         find = true;
         return 1;
      }
      if (*buf2 == *word && strlen(buf2) == strlen(word))
      {
         cout << word << " = " << buf1 << endl;
         find = true;
         return 1;
      }
      p=p->next;
   }
   if (!find) cout<<"No match"<<endl; //если совпадений не найдено
   return 0;
} 

main()
{
LE *p=NULL;

p=CreateLinSpis();
Find(p);
PrintLinSpis(p);
system("pause");
DestructLinSpis(p);
}
почему то не хочет находить заданное слово,которое есть в словаре,не могу понять почему(P.S. слова в словаре формировал так: рука-hand)
делал в отдельной программе без лин списка функцию find всё искало,работало,а тут нет...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru