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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
#1

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

02.03.2011, 00:19. Просмотров 942. Ответов 12
Метки нет (Все метки)

Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.


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


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#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 неразрешенных внешних элементов. Что сделать чтобы её не выдавало?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
885 / 779 / 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
23 / 23 / 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++
Почему при использовании функции scanf программа выдаёт ошибку? C++
C++ выдаёт ошибку в составленной программе выдаёт ошибку
C++ При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так?
Проверьте правильность C++

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

Или воспользуйтесь поиском по форуму:
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
02.03.2011, 12:47  [ТС]     Проверьте правильность кода. Почему выдаёт ошибку? #13
С помощью текстового редактора создать файл , содержащий текст ,
длина которого не превышает 1000 символов ( длина строки не должна
превышать 70 символов) . Имя файла должно иметь расширение
DAT. Написать программу, которая :• Выводит текст на экран дисплея ;
• По нажатию произвольной клавиши поочередно выделяет в
тексте заданное слово (заданное слово вводится с клавиатуры );
• Выводит текст в файл , выкидывая из него заданное слово и удаляя
лишние пробелы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#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     Проверьте правильность кода. Почему выдаёт ошибку?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru