Перейти к публикации
  • Обсуждение также на телеграм канале

    @OpenarmeniaChannel

To Programmers


Diana

Рекомендованные сообщения

Дианушка, подробнее: если нельзя использовать стандартные функции (а это даже не C++, а plane c) то смотри на ASCII-value.

Алгоритм такой: первым знаком должен быть '(', по нему вызываешь функцию,потом возможны три варианта:

знак ')' - выход из функции.

какой-то digit - передаешь значение дереву.

знак '(' - открываешь в дереве чайлда и вызываешь функцию рекурсивно опять.

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 35
  • Создано
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

а, со строкой все в порядке.. щас.

Изменено пользователем greco El (история изменений)
Ссылка на комментарий
Поделиться на других сайтах

The core idea, not debugged.

Tree class methods have to be impelmented.

// treeInsert.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <stdio.h>#include <string.h>#include <ctype.h>const char openBrace = '(';const char closeBrace = ')';const int treeDimension = 2; //binaryclass Node{};class Tree{public :  // returns pointer to the new added node.	Node* addNode(Node *nodeOwner, int value)	{  // custon case: nodeOwner == NULL when the node is the very first one.  return NULL;	};	Node* getParentNode(Node* node)	{    return NULL;	}	void deleteNode(Node *node)	{	};};// on input accepts zero-terminated stringchar * getNextCharacter(char* buff){	int index = 0;	while ( 0 != buff[index])	{  if (  	(openBrace == buff[index]) || // ok for bracket  	(closeBrace == buff[index]) ||	// ok for bracket  	(isdigit(buff[index]))	// ok for digits  	)  {  	return buff + index;  }  index++;	}	return NULL;}int main(int argc, char* argv[]){	char test_string[50]="(5(3(2( () () ) ( () )(9( () () )( () )) ) )";	Tree myTree;	//add a root initially:	Node * current = myTree.addNode(NULL, 0);	int nodesCount = 0;	int digit;	char *buffPtr = test_string;	while (1)	{    char* ch = getNextCharacter(buffPtr);  buffPtr = ch;    if (NULL == buffPtr)  {  	break; // string exhausted.  }    char nextChar = *ch;  printf("%c\t", ch[0]);      if (nextChar != closeBrace)  {  	if (nextChar == openBrace)  	{    current = myTree.addNode(current, digit); // add a subnode    digit = 0;        nodesCount++; // nodes count for current tree level        if (nodesCount > (treeDimension-1) )    { // go to the upper level:    	nodesCount = 1;    	current  = myTree.getParentNode(current);    }      	}  	else if ( isdigit(nextChar) )  	{    digit = nextChar; // remember value for further use.  	}  }   buffPtr++;	}	printf("Hello World!\n");	return 0;}
Изменено пользователем greco El (история изменений)
Ссылка на комментарий
Поделиться на других сайтах

Спасибо Греко, я уже начала писать кое что, немного по другому, но думаю мне твой код пригодится как пример, так как это всего лишь часть программы , нужно еще будет вычислять сумму всех нодов и сравнивать с запрашиваевым числом.

Спасибо еще раз.

Ссылка на комментарий
Поделиться на других сайтах

Хочешь - используй. Сумбурно, стиль нечистый, логика непоследовательная. Вряд ли профессор одобрит :)

Ссылка на комментарий
Поделиться на других сайтах

я уже начала по другому, и потом нельзя :no: использовать плагиат. я должна сама писать. :klubnik:

Когда он будет читать код то поймет что одни места написаны мной , а другие кем то другим. Потом будет мне F и запись в Student Honor Code:wallbash:

Ссылка на комментарий
Поделиться на других сайтах


  • Наш выбор

    • Наверно многие заметили, что в популярных темах, одна из них "Межнациональные браки", дискуссии вокруг армянских традиций в значительной мере далеки от обсуждаемого предмета. Поэтому решил посвятить эту тему к вопросам связанные с армянами и Арменией с помощью вопросов и ответов. Правила - кто отвечает на вопрос или отгадает загадку первым, предлагает свой вопрос или загадку. Они могут быть простыми, сложными, занимательными, важно что были связаны с Арменией и армянами.
      С вашего позволения предлагаю первую загадку. Будьте внимательны, вопрос легкий, из армянских традиций, забитая в последние десятилетия, хотя кое где на юге востоке Армении сохранилась до сих пор.
      Когда режутся первые зубы у ребенка, - у армян это называется атамнаhатик, атам в переводе на русский зуб, а hатик - зерно, - то во время атамнаhатика родные устраивают праздник с угощениями, варят коркот из зерен пшеницы, перемешивают с кишмишом, фасолью, горохом, орехом, мелко колотым сахаром и посыпают этой смесью голову ребенка. Потом кладут перед ребенком предметы и загадывают. Вопрос: какие предметы кладут перед ребенком и что загадывают?    
      • 295 ответов
  • Сейчас в сети   0 пользователей, 0 анонимных, 1 гость (Полный список)

    • Нет пользователей в сети в данный момент.
  • День рождения сегодня

  • Сейчас в сети

    1 гость

    Нет пользователей в сети в данный момент.

  • Сейчас на странице

    Нет пользователей, просматривающих эту страницу.

  • Сейчас на странице

    • Нет пользователей, просматривающих эту страницу.


×
×
  • Создать...