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

Проверьте правильность кода. Почему выдаёт ошибку? - C++

Восстановить пароль Регистрация
 
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 00:19     Проверьте правильность кода. Почему выдаёт ошибку? #1
Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.


Текст программы


#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream> // подключаем библиотеки
using namespace std;

int main()
{
FILE *fp; // указатель на файл
char c;
int tmp=0,num_w=0;
char *srch=new char[];

if((fp=fopen("1.dat","r"))==NULL) // открываем файл
{
std::cout<<"There is no file in directory\n";
getchar();
getchar();
return 1;
}

fseek(fp,0,SEEK_END); //устанавливаем позицию на конец файла
int num=ftell(fp); // определяем количество символов в файле
fseek(fp,0,SEEK_SET); //устанавливаем позицию на начало файла
char *ch=new char[num];
while(!feof(fp))
{
c=fgetc(fp);
ch[tmp]=c; // запись символов в массив char
tmp++;

}
for(int i=0;i<num;i++)
cout<<ch[i];
int p=0;
int l=0;
int q;
for(int i=0;i<num;i++)
{
if (ch[1]!=' '||ch[i]!='!'||ch[i]!='?'||ch[i]!='.')
p++;
if (ch[i]=='!'||ch[i]=='?'||ch[i]=='.'||ch[i]=='\n'||ch[i]==' ')
{
if(l<(p-1)){l=p-1; q=i-p+1;}
p=0;
}

}
char* mas=new char[l];
int j=0;
int kol=0;
int mn=0;
for (int i=q;i<q+l;i++)
{mas[j]=ch[i]; j++;}

for(int i=0;i<num;i++)
if(ch[i]==mas[0])
{ int k,qw=0;
for(k=i; k<i+l; k++)
{if(ch[k]==mas[qw])mn++;
if(mn==l){kol++; mn=0;}
qw++;}
}
cout<<endl;
for (int i=0;i<l;i++)
cout<<mas[i];
cout<<" Vstrechaetcya :"<<kol<<" RAZ";


getchar();
getchar();
return 0;
}


Выдаёт ошибку на Visual Studio 2010 fatal error LNK1120: 1 неразрешенных внешних элементов. Что сделать чтобы её не выдавало?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 00:19     Проверьте правильность кода. Почему выдаёт ошибку?
Посмотрите здесь:

C++ выдаёт ошибку в составленной программе выдаёт ошибку
C++ Почему выдаёт ошибку?
C++ Проверьте правильность написания кода и коментарии
Проверьте правильность кода C++
Почему выдаёт ошибку? Вроде всё правильно! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
02.03.2011, 00:23     Проверьте правильность кода. Почему выдаёт ошибку? #2
подключите библиотеку fstream.
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 00:29  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #3
Вставил #include <fstream.h> все равно выдает ту же ошибку!
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
02.03.2011, 00:33     Проверьте правильность кода. Почему выдаёт ошибку? #4
Цитата Сообщение от vlados92 Посмотреть сообщение
char *srch=new char[];
C
1
char *srch=new char[256];
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 00:36  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #5
Все равно выдает ошибку, вот полностью 1>c:\users\влад\desktop\new\new\new.cpp(15): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234): см. объявление "fopen"
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
1>C:\Users\Влад\Desktop\new\Debug\new.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
02.03.2011, 00:37     Проверьте правильность кода. Почему выдаёт ошибку? #6
У меня без #include "stdafx.h" и с #include <fstream> все работает!
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 00:39  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #7
на каком визуал студио?
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
02.03.2011, 00:42     Проверьте правильность кода. Почему выдаёт ошибку? #8
2010 !
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 00:46  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #9
Напишите какой код вы вставляете и текс в файле? Куда вы закидываете файл с текстом?
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
02.03.2011, 00:53     Проверьте правильность кода. Почему выдаёт ошибку? #10
Вы случаем не под виндовс проэкт создали ?
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 01:01  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #11
Все и вправду теперь работает!!! Спасибо!!! А так вообще программа написана нормально? Или что-то стоило бы переделать?
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
02.03.2011, 01:06     Проверьте правильность кода. Почему выдаёт ошибку? #12
текст программы как у вас, файл не создавал!
http://s52.***********/i136/1103/5f/50f5cc5904c7.jpg

Добавлено через 2 минуты
Оформить код получше б, а так нормально, и std::cout<<"There is no file in directory\n"; можно без стд, вы же дальше пишете без, а вначале чего-то написали!?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2011, 12:47     Проверьте правильность кода. Почему выдаёт ошибку?
Еще ссылки по теме:

почему выдаёт эту ошибку declaration terminated incorrectly? C++
C++ Почему выдаёт данную ошибку ?
C++ Метод хорд, проверьте правильность кода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 12:47  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #13
С помощью текстового редактора
создать файл , содержащий текст ,
длина которого не превышает 1000
символов ( длина строки не должна
превышать 70 символов) . Имя
файла должно иметь расширение
DAT.
Написать программу, которая :
• Выводит текст на экран дисплея ;
• По нажатию произвольной
клавиши поочередно выделяет в
тексте заданное слово (заданное
слово вводится с клавиатуры );
• Выводит текст в файл , выкидывая
из него заданное слово и удаляя
лишние пробелы.
Пользовательский интерфейс
Hello my dearbear . Nice to see you.
Текст программы
#include <stdio .h >
#include <conio. h>
#include <windows . h>
#include <iostream > / / подключаем
библиотеки
using namespace std ;
int main ()
{
FILE * fp; / / указатель на файл
char c ;
int tmp= 0 ,num _w = 0 ;
char * srch= new char[];
if(( fp= fopen(" 1 .dat ", "r "))==NULL ) //
открываем файл
{
std: :cout<<" There is no file in
directory\ n ";
getchar();
getchar();
return 1 ;
}
fseek( fp,0 ,SEEK _END ); //
устанавливаем позицию на конец
файла
int num = ftell (fp); / / определяем
количество символов в файле
fseek( fp,0 ,SEEK _SET ); / /
устанавливаем позицию на начало
файла
char * ch= new char[num ];
while(! feof( fp))
{
c= fgetc( fp);
ch[tmp]=c ; // запись символов в
массив char
tmp++ ;
}
for( int i =0 ;i <num ;i+ + )
cout<<ch [i];
cout<<endl <<"Enter word to search
\n ";
cin>>srch ; / / вводим искомую строку
char * pos= strstr( ch,srch ); // индекс
вхождения подсторки в строку
int res = (int) (pos- ch+ 1); / / находим
индекс совпадения
res- -;
if( pos!= NULL )
{
for ( int i= res; i< num;i ++ )
if (ch[ i]==' .'|| ch[ i]=='\n '|| ch[i ]==' ')
{
tmp=i +1 ;
break;
}
}
int ttp =tmp -res ;
int len = num- ttp;
char* mas= new char[len ];
for ( int i= 0; i< res; i+ +)
mas[i ]=ch[i ];
int j =res ;
for ( int i= tmp;i< num ;i+ + )
{
mas[j ]=ch[i ]; // запись
преобразованного текста в файл
j+ +;
}
FILE * fp2= fopen(" 2 .dat " ,"w "); //
запись в файл
for( int i =0 ;i <len ;i ++ )
{
cout<<mas [i];
}
fwrite(mas, sizeof(char) ,len ,fp2 );
getchar();
getchar();
return 0 ;
}
все ли задачи выполнены в коде?
Если нет можете дополнить чего не
хватает

Добавлено через 11 часов 26 минут
С помощью текстового редактора создать файл , содержащий текст ,
длина которого не превышает 1000 символов ( длина строки не должна
превышать 70 символов) . Имя файла должно иметь расширение
DAT. Написать программу, которая :• Выводит текст на экран дисплея ;
• По нажатию произвольной клавиши поочередно выделяет в
тексте заданное слово (заданное слово вводится с клавиатуры );
• Выводит текст в файл , выкидывая из него заданное слово и удаляя
лишние пробелы.

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream> // подключаем библиотеки
using namespace std;

int main()
{
FILE *fp; // указатель на файл
char c;
int tmp=0,num_w=0;
char *srch=new char[];
if((fp=fopen("1.dat.txt","r"))==NULL) // открываем файл
{
std::cout<<"There is no file in directory\n";
getchar();
getchar();
return 1;
}
fseek(fp,0,SEEK_END); //устанавливаем позицию на конец файла
int num=ftell(fp); // определяем количество символов в файле
fseek(fp,0,SEEK_SET); //устанавливаем позицию на начало файла
char *ch=new char[num];
while(!feof(fp))
{
c=fgetc(fp);
ch[tmp]=c; // запись символов в массив char
tmp++;

}
for(int i=0;i<num;i++)
cout<<ch[i];
cout<<endl<<"Enter word to search\n";
cin>>srch; // вводим искомую строку
char *pos=strstr(ch,srch); // индекс вхождения подсторки в строку
int res=(int)(pos-ch+1); // находим индекс совпадения
res--;
if(pos!=NULL)
{
for (int i=res;i<num;i++)
if (ch[i]=='.'||ch[i]=='\n'||ch[i]==' ')
{
tmp=i+1;
break;
}
}
int ttp=tmp-res;
int len=num-ttp;
char* mas=new char[len];
for (int i=0;i<res;i++)
mas[i]=ch[i];
int j=res;
for (int i=tmp;i<num;i++)
{
mas[j]=ch[i]; // запись преобразованного текста в файл
j++;
}
FILE *fp2=fopen("2.txt","w"); // запись в файл
for(int i=0;i<len;i++)
{
cout<<mas[i];

}
fwrite(mas,sizeof(char),len,fp2);
getchar();
getchar();
return 0;
}

все ли задачи выполнены в коде?
Если нет можете дополнить чего не
хватает
Yandex
Объявления
02.03.2011, 12:47     Проверьте правильность кода. Почему выдаёт ошибку?
Ответ Создать тему
Опции темы

Текущее время: 21:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru