Страница 1 из 1
Программа не работает.
Добавлено: 26 дек 2009, 17:05
qimby
Код: Выделить всё
// LR.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char a[100], t[100], o[100];
int c, k=0, z=-1, m[100], p=0;
cin.getline(a, 100, '\n');
c=strlen(a);
for(int i=0; i<=c-2; i++ )//всевозможные пары символов
t[i]=a[i]+a[i+1];
for(int y=0; y<=c-2; y++)
}
for(int b=0; b<=c-2; b++)//проверка есть ли в массиве o[100] пары символов
{
if(t[y]==o[b])
k++;
}
if(k==0)//если нет такой пары, заносим в массив и считаем кол-во повторений
{
o[p]=t[y];
for(int q=0; q<=c-2; q++)
{
if(t[y]==t[q])
z++;
}
m[p]=z;
p++;
}
z=-1;
k=0;
}
for(int u=0; u<=p; u++)//вывод
cout<<o[u]<<m[u];
return 0;
}
на экран выводится странный символ и число.
поэтапно разобрал, не знаю почему не работает, ПОМОГИТЕ ПЛЗ!!!
Re: Программа не работает.
Добавлено: 26 дек 2009, 17:11
qimby
Блин, забыл самое главное, программа должна высчитывать повторы пар символов в строке и выводит на экран пару и кол-во повторений.
Re: Программа не работает.
Добавлено: 26 дек 2009, 19:20
qimby
Спасибо, справился сам, если что то вот код.
Код: Выделить всё
// LR3.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char a[100], o[100][2];
int c, z=0, p=0, l=-1, m[100];
cout<<"Vvedite text"<<"\n";
cin.getline(a, 100, '\n');
c=strlen(a);
for(int i=0; i<=c-2; i++)
{
for(int y=0; y<=c-2; y++)
{
if(a[i]==o[y][0] && a[i+1]==o[y][1])
z++;
}
if(z==0)
{
o[p][0]=a[i];
o[p][1]=a[i+1];
for(int g=0; g<=c-2; g++)
{
if(a[i]==a[g] && a[i+1]==a[g+1])
l++;
}
p++;
m[p]=l;
}
z=0;
l=-1;
}
for(int q=0; q<p; q++)
cout<<o[q][0]<<o[q][1]<<" "<<m[q]<<"\n";
return 0;
}
Re: Программа не работает.
Добавлено: 26 дек 2009, 19:25
qimby
только теперь проблема, программа выводит все пары нормально кроме первой, выводит первую пару а справа непонятное число, первый элемент массива почему то не заполняется(((
Re: Программа не работает.
Добавлено: 27 дек 2009, 10:15
Albor
qimby, у тебя дебаггер есть? Поставь точку останова и выясни, что не так работает и откуда берётся "непонятное число". Судя по 3-му топику - ты думать всё-таки умеешь, поэтому, для твоей же пользы - выполни программу в пошаговом режиме.
Re: Программа не работает.
Добавлено: 27 дек 2009, 15:16
qimby
Спасибо, всё получилось, сначала хотел хотел смошенничать и отдельно первый элемент массива посчитать, но оказалось что у меня проблема не только с 1-ым элементом, а со всеми, потом обнаружил что две строчки нужно поменять местами и всё заработало.
Код: Выделить всё
// LR3.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char a[100], o[100][2];
int c, z=0, p=0, l=0, m[100], n=0, r;
cout<<"Vvedite text"<<"\n";
cin.getline(a, 100, '\n');
c=strlen(a);
r=c-2;
for(int i=0; i<=r; i++)
{
for(int y=0; y<=r; y++)
{
if(a[i]==o[y][0] && a[i+1]==o[y][1])
z++;
}
if(z==0)
{
o[p][0]=a[i];
o[p][1]=a[i+1];
for(int g=0; g<=r; g++)
{
if(a[i]==a[g] && a[i+1]==a[g+1])
l++;
}
m[p]=l;
p++;
}
z=0;
l=0;
}
for(int q=0; q<p; q++)
cout<<o[q][0]<<o[q][1]<<" "<<m[q]<<"\n";
return 0;
}
Re: Программа не работает.
Добавлено: 27 мар 2010, 15:58
qimby
теперь мне нужно чтобы он считал все пары символов кроме пробела, как сделать не знаю, пишу в условии a!=" ", а компилятор ругается на это((((
Re: Программа не работает.
Добавлено: 27 мар 2010, 16:48
rrrFer
Код: Выделить всё
/*программа должна высчитывать повторы пар символов в строке и выводит на экран пару и кол-во повторений. */
#include <iostream>
using namespace std;
int main(int argc, char* argv){
enum ESTR{
LSRT=255
};
char *s;
int i,kol,j;
s=new char[LSRT];
cout<<"Vvedite text"<<endl;
cin.getline(s,(int)LSRT);
for(i=0;s[i];i++){
for(j=i+1,kol=0;s[j];j++)
if(s[i]==s[j]&&s[i+1]==s[j+1])
kol++;
if(kol)
cout<<s[i]<<s[i+1]<<" - "<<kol<<endl;
}
system("pause");
delete []s;
return 0;
}
или я неправильно понял задачу?
Re: Программа не работает.
Добавлено: 27 мар 2010, 17:01
rrrFer
Код: Выделить всё
/*программа должна высчитывать повторы пар символов в строке и выводит на экран пару и кол-во повторений. */
#include <iostream>
using namespace std;
int main(int argc, char* argv){
enum ESTR{
LSTR=255
};
char *s,**a;
int i,kol,j,n;
s=new char[LSTR];
a=new char*[LSTR];
cout<<"Vvedite text"<<endl;
cin.getline(s,(int)LSTR);
for(i=n=0;s[i];i++){
for(j=i+1,kol=0;s[j];j++)
if(s[i]==s[j]&&s[i+1]==s[j+1]&&s[i]!=' '&&s[i+1]!=' ')
kol++;
if(kol){
for(j=0;j<n;j++)
if(a[j][0]==s[i]&&a[j][1]==s[i+1])
break;
if(j==n){
a[n]=new char[3];
a[n][0]=s[i];
a[n][1]=s[i+1];
a[n][2]=kol+1;
n++;
}
}
}
for(i=0;i<n;i++)
cout<<a[i][0]<<a[i][1]<<" - "<<(int)a[i][2]<<endl;
system("pause");
for(i=0;i<n;i++)
delete []a[i];
delete []a;
delete []s;
return 0;
}