С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Предложения в С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ fprintf не переводит на новую строку http://www.cyberforum.ru/cpp-beginners/thread572273.html
fprintf(fz,"%7s|%7s|%7s|%7s|%7s|\n ",Ndv1,Kd1,Mvx1,Nk1,Urash1,Nper1); не хочет переводить на новую строчку не могу понять почему
C++ Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести эталонный символ. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести эталонный символ. Вводить символы с экрана в стек до встречи... http://www.cyberforum.ru/cpp-beginners/thread572264.html
C++ Жорданова форма
Пишу программу для вычисления жордановой формы матрицы. Вопрос: как нерекурсивно вычислить определитель матрицы? Для операций с многочленами у меня есть следующий класс: template<typename T> class...
C++ Передача параметров в функцию
Толи я чего-то туплю, толи всё же в мейн ошибка. Итак: есть функция, которая должна сообщать о результатах поиска изменением переменных что передаются ей в качестве параметра и есть мейн, который...
C++ Вывести фамилии учеников в порядке их возрастания http://www.cyberforum.ru/cpp-beginners/thread572233.html
Здравствуйте! Помогите пожалуйста с задачей: Известен рост каждого из 25-ти учеников класса. Нет ни одной пары учеников,имеющих одинаковый рост. Вывести фамилии учеников в порядке их возрастания....
C++ Помогите запустить программу. Раньше работала, сейчас не запускается.. вот сам проект подробнее

Показать сообщение отдельно
vano47
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
12.05.2012, 22:09  [ТС]
Вот собственно мой код:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream.h>


// Структура, которая описывает элемент списка.
struct element
{
char word[50]; // Слово.
element *next; // Указатель на следующий элемент списка.
};


// Класс, описывающий предложение.
class sentence
{char *p; sentence *next;
public:
// Консруктор. Принимает в качестве параметра строку с предложением,
// разбивает её по пробелам на слова и сохраняет каждое слово
// в список sent.
sentence();
sentence(sentence *top);
// Деструктор.
~sentence();
// Печатает предложение.
void print();
// Считает количество заданных букв в предложении.
int count(char c);
// Проверяет, присутствует ли в предложении заданное слово.
int have(char* word);
// Меняет словов word на newword.
void replace(element* word, char* newword, int N);
sentence *get_next(){return next;}
private:
// Список слов предложения.
element* sent;
};


sentence::sentence(sentence *top)
{int flag=0; char s[500];
do{cout<<"Vvedite predlozhenie: ";
gets(s);
int count = strlen(s);
if(count>250){cout<<"Predlozhenie doL}|{no bit ne bolshe 250 simvolov!";
flag=1;}
flag=0;}
while(flag==1);
p=new char [strlen(s)+1];
strcpy (p,s);
element* curr = NULL;
// Разбиваем текст по словам.
char* word = strtok(s, " ");
while(word != NULL)
{
// Заполняем список.
if(curr == NULL)
{
// Вносим первый элемент в список.
curr = (element*) malloc(sizeof(element));
strcpy(curr->word, word);
curr->next = 0;
this->sent = curr;
}
else
{
// Вносим следующие элементы в список.
element* e = (element*) malloc(sizeof(element));
strcpy(e->word, word);
e->next = NULL;
curr->next = e;
curr = e;
}
word = strtok(0, " ");
}
next=top;
}



sentence::~sentence()
{
//Удаляем все узлы списка.
element* e = this->sent;
while(e != NULL)
{
element* tmp = e;
e = e->next;
free(tmp);
free(p);
}
}

void sentence:rint()
{
cout<<p<<"\n";
}

int sentence::count(char c)
{
int counter = 0; // Счётчик количества символов.
element* e = this->sent;
// Перебираем все слова.
while(e != NULL)
{
char* word = e->word;
// Перебираем буквы в каждом слове.
while(*word != '\0')
{
if(*word == c) counter++;
word++;
}
e = e->next;
}
return counter;
}

int sentence::have(char* word)
{
// Перебираем все слова.
element* e = this->sent;
while(e != NULL)
{
// Если нашли искомое слово, возвращаем 1.
if(strcmp(e->word, word) == 0) return 1;
e = e->next;
}
// Если ничего не нашли, возвращаем 0.
return 0;
}
void sentence::replace(element* word, char* newword, int N)
{
// Перебираем все слова.
element* e = this->sent;
while(e != NULL)
{
// Если нашли искомое слово, меняем его.
for(int i=0; i<N; i++)
if(strcmp(e->word, (word+i)->word)== 0) strcpy(e->word, newword);
e = e->next;}
e = this->sent;
while(e != NULL)
{
printf("%s ", e->word);
e = e->next;
}
printf("\n");

}

int main()
{char c, word1[40], newword[30], oldword[30];
int u, k, t, N;


sentence *top=NULL;
do {top=new sentence(top);
cout<<"Xotite vvesti eshe odno predlo}|{enie Y/N?\n";
cin>>c;
}
while(c=='Y'||c=='y');

cout<<"Vvedite simvol: ";
cin>>c;
sentence *temp=top;
while(temp){
u+=temp->count(c);
temp=temp->get_next();}
cout<<"\nDanni Simvol vvoditca "<<u<<" raza";

cout<<"\nVvediti slovo: ";
gets(word1);
temp=top;
while(temp){
k=temp->have(word1);
if(k==1)temp->print();
temp=temp->get_next();}

cout<<"\nVvediti novoe slovo: ";
gets(newword);
element *slovo;
cout<<"\nVvediti kol-vo zamen9emix slov: ";// вот тут то и хотелось вводить не количество слов а сразу словосчетание.
cin>>N;
slovo=new element[N];
for(int i=0; i<N; i++){
cout<<"\nVvediti slovo kotoroe nu}|{no zamenit: ";
gets(oldword);
strcpy((slovo+i)->word, oldword);
for(int j=0; j<30; j++)
oldword[j]=0;
}

temp=top;
while(temp){temp->replace(slovo, newword, N);
temp=temp->get_next();}

getch();
return 0;
}

Добавлено через 2 минуты
как видите я использую массивы типа чар, интересно можно как нибудь выполнить мое задание без использования класса string?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.