Автор Тема: помогите с c++  (Прочитано 2147 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ilfsss

  • Редкий гость
  • Пол: Мужской
помогите с c++
« : 10 Декабря 2012, 23:39:08 »
1. Постановка задачи

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

вот код, который у меня не получается скомпилировать

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int i,j,p[225],k,ss[225];
char s[225][225],*pf,q;
FILE *f1;
void menu()
{
clrscr();
cout<<"viberite punkt menu\n";
cout<<"1 -> vivesti vsu informaciyu\n";
cout<<"2 -> vivesti informaciyu ob odnoy stroke\n";
cout<<"3 -> vivesti vsu informaciyu o probelah\n";
cout<<"4 -> vivesti vsu informaciyu o specznakah\n";
cout<<"5 -> vivesti sodergimoe fayla\n";
cout<<"6 -> nayti kolvo povtoreniy slova\n";
cout<<"7 -> vihod\n";
}
int kolvoslov()
{
int fs=1,nc=0;
char ch[2]={0};
f1=fopen(pf,"r");
while(!feof(f1))
{
fgets(ch,2,f1);
if(ch[0]>32)
fs=0;
else if(0==fs)
{
nc++;
fs=1;
}
ch[0]=0;
}
fclose(f1);
return nc;
}
void main()
{
clrscr();
cout<<"vvedite nazvanie fayla-> ";
cin>>pf;
for(i=0;i<225;i++)
{
p=0;ss=0;
}
 if ((f1=fopen(pf,"r"))
 == NULL)
{
 cout<<"takogo fayla net";
 getche();
 abort();
}
f1=fopen(pf,"r");
i=0;
while(!feof(f1))
{
fgets(s,225,f1);
i++;
}
for(j=0;j<i;j++)
for(k=0;k<225;k++)
{
if(s[j][k]=='\0')break;
switch(s[j][k])
{
case ',':
case '!' :
case '#' :
case '$' :
case '%' :
case '^' :
case '&' :
case '*' :
case '(' :
case ')' :
case '-' :
case '_' :
case '=' :
case '+' :
case ';' :
case ':' :
case '"' :
case '>' :
case '<' :
case '/' :
case '.' :
case '}' :
case '{' :
case '[' :
case ']' :
ss[j]++;
break;
case ' ': p[j]++; break;
}
}
while(q!='7')
{
menu();
cin>>q;
if(q=='1')
{
for(j=0;j<i;j++)
{
cout<<"kolvo probelov v "<<j+1<<" stroke="<<p[j]<<"\n";
cout<<"kolvo specznakov v "<<j+1<<" stroke="<<ss[j]<<"\n";
}
cout<<"kolvo slov v fayle="<<kolvoslov();
getche();
}
if(q=='2')
{
cout<<"vvedite nomer stroki";
cin>>j;
cout<<"kolvo probelov v "<<j<<" stroke="<<p[j-1]<<"\n";
cout<<"kolvo specznakov v "<<j<<" stroke="<<ss[j-1]<<"\n";
getche();
}
if(q=='3')
{
for(j=0;j<i;j++)
cout<<"kolvo probelov v "<<j+1<<" stroke="<<p[j]<<"\n";
getche();
}
if(q=='4')
{
for(j=0;j<i;j++)
cout<<"kolvo specznakov v "<<j+1<<" stroke="<<ss[j]<<"\n";
getche();
}
if(q=='5')
{
for(j=0;j<i;j++)
cout<<s[j];
getche();
}
if(q=='6')
{
int len,qw=0,ks=0;
char slovo[20];
cout<<"vvedite iskomoe slovo ";
cin>>slovo;
len=strlen(slovo);
for(int i1=0;i1<i;i1++)
for(int i2=0;i2<55;i2++)
{
if(s[i1][i2]==slovo[qw])
qw++;
else qw=0;
if((qw+1)==len)
ks++;
}
cout<<"sovpadayushih slov -> "<<ks;
getche();
}
}
}


сдача курсовой завтроу. выручайте господа;)

Оффлайн ilfsss

  • Редкий гость
  • Пол: Мужской
Re: помогите с c++
« Ответ #1 : 11 Декабря 2012, 00:12:02 »
я завтра на работу, там нет вижуала, да и вообще компы древнющие, может не запуститься. если будет у кого возможность, поделайте скриншотов, и ссылочку скиньте;) с меня полцарства.

Оффлайн Sten

  • Волшебник
  • Пол: Мужской
  • Sten_Records, 2007
Re: помогите с c++
« Ответ #2 : 11 Декабря 2012, 00:46:00 »
я завтра на работу, там нет вижуала, да и вообще компы древнющие, может не запуститься. если будет у кого возможность, поделайте скриншотов, и ссылочку скиньте;) с меня полцарства.
а зачем тут вижуал? имхо, достаточно и старенького досового турбо-си или борланд-си....
Старый добрый микровский форум(forum.vdonsk.ru) жив и находится по адресу: http://oldforum.vdonsk.ru/

Оффлайн point212

  • Модераторы
  • *****
  • Пол: Мужской
  • Мосс смотрит на вас...
Re: помогите с c++
« Ответ #3 : 11 Декабря 2012, 00:47:48 »
Топикстартер, отредактируй своё сообщение и оформи код в теги

[ code ]
...
[ /code ]


или в цитату... а то вырвиглазно смотрится.
[ quote ]
[ /quote ]

Оффлайн DoReMi

  • Админы
  • *****
  • Пол: Мужской
    • БЛОГОДОРЕМИЕ
Re: помогите с c++
« Ответ #4 : 11 Декабря 2012, 11:46:38 »
сдача курсовой завтроу. выручайте господа;)

Ну что сказать... Приходи вчера!

нынаю как у вас в си, а у нас в пуребасике всё проще, содержимое файла в строку, функцией CountString(String$, StringToCount$) можно посчитать в строке количество нужных символов или подстрок, а спецсимволы можно находить по коду ascii.
« Последнее редактирование: 11 Декабря 2012, 11:53:22 от DoReMi »
Вы держитесь здесь,  вам всего доброго, хорошего настроения, здоровья. ©

Оффлайн android

  • Авторитет
Re: помогите с c++
« Ответ #5 : 11 Декабря 2012, 13:03:19 »
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

int i,j,p[225],k,ss[225];
char s[225][225],pf[255],q;
FILE *f1;

void menu()
{
system("cls");
cout<<"viberite punkt menu\n";
cout<<"1 -> vivesti vsu informaciyu\n";
cout<<"2 -> vivesti informaciyu ob odnoy stroke\n";
cout<<"3 -> vivesti vsu informaciyu o probelah\n";
cout<<"4 -> vivesti vsu informaciyu o specznakah\n";
cout<<"5 -> vivesti sodergimoe fayla\n";
cout<<"6 -> nayti kolvo povtoreniy slova\n";
cout<<"7 -> vihod\n";
}

int kolvoslov()
{
int fs=1,nc=0;
char ch[2]={0};
f1=fopen(pf,"r");
while(!feof(f1))
{
fgets(ch,2,f1);
if(ch[0]>32)
fs=0;
else if(0==fs)
{
nc++;
fs=1;
}
ch[0]=0;
}
fclose(f1);
return nc;
}

void main()
{
system("cls");
cout<<"vvedite nazvanie fayla-> ";
cin>>pf;
for(i=0;i<225;i++)
{
p[i]=0;ss[i]=0;
}
if ((f1=fopen(pf,"r"))== NULL)
{
cout<<"takogo fayla net";
_getche();
return;
}
f1=fopen(pf,"r");
i=0;
while(!feof(f1))
{
fgets(s[i],225,f1);
i++;
}
for(j=0;j<i;j++)
for(k=0;k<225;k++)
{
if(s[j][k]=='\0')break;
switch(s[j][k])
{
case ',':
case '!' :
case '#' :
case '$' :
case '%' :
case '^' :
case '&' :
case '*' :
case '(' :
case ')' :
case '-' :
case '_' :
case '=' :
case '+' :
case ';' :
case ':' :
case '"' :
case '>' :
case '<' :
case '/' :
case '.' :
case '}' :
case '{' :
case '[' :
case ']' :ss[j]++;break;
case ' ': p[j]++; break;
}
}
while(q!='7')
{
menu();
cin>>q;
if(q=='1')
{
for(j=0;j<i;j++)
{
cout<<"kolvo probelov v "<<j+1<<" stroke="<<p[j]<<"\n";
cout<<"kolvo specznakov v "<<j+1<<" stroke="<<ss[j]<<"\n";
}
cout<<"kolvo slov v fayle="<<kolvoslov();
_getche();
}
if(q=='2')
{
cout<<"vvedite nomer stroki";
cin>>j;
cout<<"kolvo probelov v "<<j<<" stroke="<<p[j-1]<<"\n";
cout<<"kolvo specznakov v "<<j<<" stroke="<<ss[j-1]<<"\n";
_getche();
}
if(q=='3')
{
for(j=0;j<i;j++)
cout<<"kolvo probelov v "<<j+1<<" stroke="<<p[j]<<"\n";
_getche();
}
if(q=='4')
{
for(j=0;j<i;j++)
cout<<"kolvo specznakov v "<<j+1<<" stroke="<<ss[j]<<"\n";
_getche();
}
if(q=='5')
{
for(j=0;j<i;j++)
cout<<s[j];
_getche();
}
if(q=='6')
{
int len,qw=0,ks=0;
char slovo[20];
cout<<"vvedite iskomoe slovo ";
cin>>slovo;
len=strlen(slovo);
for(int i1=0;i1<i;i1++)
for(int i2=0;i2<225;i2++)
{
if(s[i1][i2]==slovo[qw])
qw++;
else qw=0;
if((qw)==len)
{
ks++;
qw=0;
}
}
cout<<"sovpadayushih slov -> "<<ks;
_getche();
}
}
}


Visual studio 2010, компилируется, работает, но нужно допиливать :)
« Последнее редактирование: 11 Декабря 2012, 13:04:38 от android »

Оффлайн ilfsss

  • Редкий гость
  • Пол: Мужской
Re: помогите с c++
« Ответ #6 : 12 Декабря 2012, 09:06:42 »
Спасибо!  :)  Курсач не сдал. По причине не раскрытия "теоретической части".(не на копипасте теории я акцентировал свое внимание) А с программой всё ок;)
С меня полцарства, ессно) Скинь свой номер.