Страница 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;
}