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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2007, 13:46   #1
Scudetto
 
Регистрация: 22.09.2007
Сообщений: 6
По умолчанию Входная строка, сортировка, вывод...

Здравствуйте, подскажите, пожалуйста, что надо сделать, чтобы эта программа работала,

ато выдаются неизвестные ошибки:

Linking CHLAB_T.EXE:
Linker Error: Undefined symbol _CharToOem in module Labi\CHLAB_T.C
Linker Error: Undefined symbol _OemToChar in module Labi\CHLAB_T.C

Программа должна переписывать в выходную строку слова
входной строки в порядке возрастания их длины.


Код:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <dos.h>

//objavlenie svoih funkcij
int cursorSymbol (char in[], int mark);
int cursorSpace (char in[], int mark);
void puz (int in[], int n);

main ()
{	//objavlenie peremennih

	int nachalo = 0;	//nachalo slova
   int konec   = 0;  //konec slova
   int cntr    = 0;	//chislo slov
   int i = 0;			//ispoljzuetsja dlja proverki konca stroki
   int h = 0;			//chislo slov raznoj dlini
   int dlnWord[200];	//mas s dlinavi vseh slov
   int unique[200];	//mas s unique dlinami slov
	char input[200];	//vvodimaja stroka
   char a[200];			//vivod soobsh i otsortirovannih slov
   char stroka[200];	//vhodn stroka s preobraz kodovoj stranicej
   char buf[200];		//bufernaja peremennaja dlja kopirovanija v nee slov
   printf("Lab C\n");
   //vivod preglashenija vvesti stroku
	CharToOem ("vvedite stroku: ", a);
	printf("%s", a);
	gets (input);	//schitivanie vhodnoj stroki

   OemToChar (input, stroka);	//menjaem kodovuju stranicu vvedennoj stroki

   //nahodim dlinu pervogo slova
   nachalo = cursorSymbol(stroka, nachalo);
   konec   = cursorSpace (stroka, nachalo);
   dlnWord[cntr] = konec - nachalo;
   cntr++;
   i = konec;

   //zapolnjaem massiv dlinami vseh slov
	for (; stroka[i]!='\0';)
   {
		nachalo = cursorSymbol(stroka, konec);
      konec   = cursorSpace (stroka, nachalo);
		dlnWord[cntr] = konec - nachalo;
      cntr++;
      i = konec;
   }

	//sortiruem massiv s dlinami slov metodom puzirjka
   puz(dlnWord, cntr);

	//sozdaem massiv s dlinami unikaljnih slov

   {  int j,g,f; { for (j=0; j < cntr; j++)
		if (dlnWord[j] == dlnWord[j+1]) continue;
      else
      {
	      unique[h] = dlnWord[j];
         h++;
      }
   }}

{      int g;	//vivod slov v porjadke vozrastanija ih dlin

   {     for (g=0;g < h; g++)
   	//obrabativaem pervoe slovo i esli nado, pechataem ego
   	i = 0, nachalo = 0, konec = 0;
		nachalo = cursorSymbol(stroka, nachalo);
		konec   = cursorSpace (stroka, nachalo);
		i = konec;
		if (unique[g] == (konec-nachalo))
		{
		   int k = 0;
		  int  f = nachalo;
     	   for (f=nachalo; f < konec; f++, k++)
			{
				buf[k] = stroka[f];
			}
	      buf[k] = '\0';
         CharToOem (buf, a);
			printf("%s ", a);	//pechataem slovo
      }
      //obrabativaem vse ostaljnie slova i pechataem ih
		for (; stroka[i]!='\0';)
	   {
			nachalo = cursorSymbol(stroka, konec);
	      konec   = cursorSpace (stroka, nachalo);
         if (unique[g] == (konec-nachalo))
			{
			int k = 0;
			int  f = nachalo;
      	   for (f=nachalo; f < konec; f++, k++)
	         {
					buf[k] = stroka[f];
   	      }
	         buf[k] = '\0';
           	CharToOem (buf, a);
				printf("%s ", a);	//pechataem slovo
			}
	      i = konec;
	   }
   }}

getch();	//zaglushka:)
}

//-----funkcii--------------------------------------------------
//--nahodit i vozvrashaet poziciju simvola(ne probel)--
int cursorSymbol (char in[], int mark)
{
	for (; (in[mark]) == ' ' && in[mark] != '\0'; mark++);
   return mark;
}

//--nahod i vozvr poziciju gde probel---------------------
int cursorSpace (char in[], int mark)
{
	for (; in[mark] != ' ' && in[mark] != '\0'; mark++);
   return mark;
}

/* ---------------------------------------------------------------------------*
*       Funkcija sortirovki metodom puzirjka                                *
*-----------------------------------------------------------------------------*/
void puz(int A[], int n)
{
int i, found;
do	{			  	// povtorjatj prosmotr...
	found = 0;
	for (i=0; i<n-1; i++)
	if (A[i] > A[i+1])  	// sravnitj sosedej
		{		  	// perestavitj sosedej
		int	cc;
			cc = A[i]; A[i]=A[i+1]; A[i+1]=cc;
			found++;
		}
	} while(found !=0); 	//poka estj perestanovki
}

Последний раз редактировалось merax; 18.11.2007 в 14:14.
Scudetto вне форума Ответить с цитированием
Старый 18.11.2007, 14:12   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Короче я в сам код не вникал просто ошибки поправил...


Код:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <dos.h>

//objavlenie svoih funkcij
int cursorSymbol (char in[], int mark);
int cursorSpace (char in[], int mark);
void puz (int in[], int n);

main ()
{ //objavlenie peremennih

int nachalo = 0; //nachalo slova
int konec = 0; //konec slova
int cntr = 0; //chislo slov
int i = 0; //ispoljzuetsja dlja proverki konca stroki
int h = 0; //chislo slov raznoj dlini
int dlnWord[200]; //mas s dlinavi vseh slov
int unique[200]; //mas s unique dlinami slov
char input[200]; //vvodimaja stroka
char a[200]; //vivod soobsh i otsortirovannih slov
char stroka[200]; //vhodn stroka s preobraz kodovoj stranicej
char buf[200]; //bufernaja peremennaja dlja kopirovanija v nee slov
printf("Lab C\n");
//vivod preglashenija vvesti stroku
CharToOem ("vvedite stroku: ", a);
printf("%s", a);
gets (input); //schitivanie vhodnoj stroki

OemToChar (input, stroka); //menjaem kodovuju stranicu vvedennoj stroki

//nahodim dlinu pervogo slova
nachalo = cursorSymbol(stroka, nachalo);
konec = cursorSpace (stroka, nachalo);
dlnWord[cntr] = konec - nachalo;
cntr++;
i = konec;

//zapolnjaem massiv dlinami vseh slov
for (;;stroka[i]!='\0');
{
nachalo = cursorSymbol(stroka, konec);
konec = cursorSpace (stroka, nachalo);
dlnWord[cntr] = konec - nachalo;
cntr++;
i = konec;
}

//sortiruem massiv s dlinami slov metodom puzirjka
puz(dlnWord, cntr);

//sozdaem massiv s dlinami unikaljnih slov

{ int j,g,f; { for (j=0; j < cntr; j++)
if (dlnWord[j] == dlnWord[j+1]) continue;
else
{
unique[h] = dlnWord[j];
h++;
}
}}

{ int g; //vivod slov v porjadke vozrastanija ih dlin

{ for (g=0;g < h; g++)
//obrabativaem pervoe slovo i esli nado, pechataem ego
i = 0, nachalo = 0, konec = 0;
nachalo = cursorSymbol(stroka, nachalo);
konec = cursorSpace (stroka, nachalo);
i = konec;
if (unique[g] == (konec-nachalo))
{
int k = 0;
int f = nachalo;
for (f=nachalo; f < konec; f++, k++)
{
buf[k] = stroka[f];
}
buf[k] = '\0';
CharToOem (buf, a);
printf("%s ", a); //pechataem slovo
}
//obrabativaem vse ostaljnie slova i pechataem ih
for (;; stroka[i]!='\0')
{
nachalo = cursorSymbol(stroka, konec);
konec = cursorSpace (stroka, nachalo);
if (unique[g] == (konec-nachalo))
{
int k = 0;
int f = nachalo;
for (f=nachalo; f < konec; f++, k++)
{
buf[k] = stroka[f];
}
buf[k] = '\0';
CharToOem (buf, a);
printf("%s ", a); //pechataem slovo
}
i = konec;
}
}}

getch(); //zaglushka
}

//-----funkcii--------------------------------------------------
//--nahodit i vozvrashaet poziciju simvola(ne probel)--
int cursorSymbol (char in[], int mark)
{
for (; (in[mark]) == ' ' && in[mark] != '\0'; mark++);
return mark;
}

//--nahod i vozvr poziciju gde probel---------------------
int cursorSpace (char in[], int mark)
{
for (; in[mark] != ' ' && in[mark] != '\0'; mark++);
return mark;
}

/* ---------------------------------------------------------------------------*
* Funkcija sortirovki metodom puzirjka *
*-----------------------------------------------------------------------------*/
void puz(int A[], int n)
{
int i, found;
do { // povtorjatj prosmotr...
found = 0;
for (i=0; i<n-1; i++)
if (A[i] > A[i+1]) // sravnitj sosedej
{ // perestavitj sosedej
int cc;
cc = A[i]; A[i]=A[i+1]; A[i+1]=cc;
found++;
}
} while(found !=0);
   {
   } //poka estj perestanovki
}
И кстати чем эти ошибки неизвесные??? Читаите мануал

И в следующий раз оформляйте свои сообщения более качественно

Последний раз редактировалось merax; 18.11.2007 в 14:16.
merax вне форума Ответить с цитированием
Старый 18.11.2007, 23:05   #3
Scudetto
 
Регистрация: 22.09.2007
Сообщений: 6
По умолчанию

выдаёт много предупреждений и пишет, что у функций нету прототипов, самих этих функций (CharToOem; OemToChar) походу тоже нету, но обращение к ним есть. Именно в си прога подразумевалась...Спасибо!
Scudetto вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32
Бегущая строка и about Патрон Общие вопросы Delphi 12 02.06.2008 22:31
командная строка Mails Помощь студентам 2 12.05.2008 18:29
Консольная программа на Си: ввод, вывод, сортировка, сохранение в текстовый файл. zerg Помощь студентам 8 16.11.2007 12:57
тип строка Jallexe Общие вопросы Delphi 8 14.11.2006 17:25