Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как решить такую задачу со стрингом? Стринги и сравнение. 
:(
    Опции темы
Legend
Дата 22.3.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Задача такова:
Вводятся данные:
 Код Ид родителей- Стрингом
Л- число детей
Код Ид детей- массив стрингов
....Выводятся на Экран:
Введённый ИД код-стринг
Число внуков - инт
Ид внуков- Массив стрингов
...................................................
Програмка сравнивает Ид детей (которые дети первых родителей) с другими ид родителей и определяет являются ли они детьми Этих детей(которые дети первых родителей). Если стринги равны то следовательно эти дети внуки первых родителей. И они выводятся на экран вместе с Ид бабушек, дедушек (первые родители)  и их Ид.
....
Объяснил как смог :( надеюсь понятно). Интересует как можно задекларировать массив стрингов...и как сравнить стринги со стрингами из массива.
........пример....
ввод
ид-родителя
98432445246
детей-2
ид-детей
42435463242=и
23498473625

ид родителя
424354632442=и
детей-3
ид-детей
23784726371
38472635162
39182748293

вывод 
ид-родителя
98432445246
внуков-3
ид-внуков
23784726371
38472635162
39182748293

Зарание спасибо :/
PM MAIL   Вверх
zim22
Дата 22.3.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



массив стрингов так создаётся:
Код

std::string arr[100];

может вам лучше вектор использовать? 
Код

std::vector<std::string> vs;

это тот же самый массив, но более умный. умеет менять размер и т.д. и т.п.

сравнивать так:
Код

for (std::vector<std::string>::const_iterator it = vs.begin(); it != vs.end(); ++it)
{
   if (*it == "ivanov") { // делать что-то }
   
}


Это сообщение отредактировал(а) JackYF - 22.3.2009, 16:56


--------------------
PM MAIL   Вверх
Dmi3ev
Дата 22.3.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

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

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


--------------------

PM MAIL   Вверх
mes
Дата 22.3.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Legend @  22.3.2009,  15:47 Найти цитируемый пост)
как можно задекларировать

насколько я понял задание, вам нужно древо.. задекларировать структуру его элемента можно так :
Код

struct Node
{
    std::string  id;
    Node ** childs;
    Node * parent; // если нужно по потомку узнать родителя
};

на основе этих элементов строится список дерево.. как именно поможет гугль и книжка smile

ну а как работать со string написано здесь: http://www.cplusplus.com/reference/string/string/

Это сообщение отредактировал(а) mes - 22.3.2009, 17:06


--------------------
PM MAIL WWW   Вверх
Legend
Дата 22.3.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Спс )    
std::string arr[100]; если мне надо массив, который стостоит из количества строчек= количеству детей=КД у родителей. В тоже время строка каждая должна состоять из 11-и елементов/ цифр. То писать std::string arr[КД]; а как задать длинну строки 11?
PM MAIL   Вверх
mes
Дата 22.3.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Legend @  22.3.2009,  16:18 Найти цитируемый пост)
 а как задать длинну строки 11? 

std:.string за длиной сама следит, просто присваиваете необходимый идентификатор и все.


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 22.3.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



mes, я думаю, что товарищ пока не очень силен в программировании, а ты ему дерево уже...
Может че попроще? 


--------------------

PM MAIL   Вверх
Legend
Дата 22.3.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Dmi3ev
Цитата

потому как заранее неизвестно, сколько детей, сколько у этих детей детей и тд...

У меня есть ограничения.. в том что детей может быть максимум 10. А внуков 100. Решил взять массив.. так как более с ним знаком.. а с вектором я вообсще не встречался. И теперь всё тотже вопрос как сравнить их) так как мне показали сравнения векторов.
PM MAIL   Вверх
mes
Дата 22.3.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dmi3ev @  22.3.2009,  16:24 Найти цитируемый пост)
mes, я думаю, что товарищ пока не очень силен в программировании, а ты ему дерево уже...
Может че попроще?  

ну такую задачу он огласил smile
данные динамичиские: кол-во детей не постояно, глубина иерархии судя по всему тоже  - в линейный массив такое дерево без извращений не затолкаешь, так что проще будет изучить что такое дерево
или для начала разобраться со списком, можно даже на примере этой задачи, ограничив число детей каждого родителя  1 "штукой" smile
если глубина иерархие ограничена, то можно через многомерный динамический массив, главное в звездочках не запутаться smile

Добавлено @ 17:39
Цитата(Legend @  22.3.2009,  16:33 Найти цитируемый пост)
У меня есть ограничения.. в том что детей может быть максимум 10. А внуков 100. 

Ну с этого и надо было начинать : 
Код

std::string [10][10][10]; // 10 родителей по 10 детей по 10 внуков на одного дитя :)
// только учтите что индексы с 0



Это сообщение отредактировал(а) mes - 22.3.2009, 17:44


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 22.3.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

И теперь всё тотже вопрос как сравнить их)

используя "=="
Код

string s[3];
s[0]="ccc";
s[1]="bbbb";
s[2]="ggggg";
for (int i=0; i<3; i++)
 if (s[i]=="bbbb")
  cout<<"index="<<i<<endl;



--------------------

PM MAIL   Вверх
mes
Дата 22.3.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Legend @  22.3.2009,  16:33 Найти цитируемый пост)
И теперь всё тотже вопрос как сравнить их)

их это std::string ? также каk и обычные значения, посредством оператора ==
Вам в самом начале ссылку на все ее функции дали, а Вы даже не подумали заглянуть.. 
с таким подходом далеко не уедете.. 


--------------------
PM MAIL WWW   Вверх
Legend
Дата 22.3.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Заглянул я )) и нашёл if (LK.compare(ID) = 0) .. попробую через это .. А вопрос задал .. что вдруг посоветуют чегонить получше ) ну во всяком случае спасибо и за критикуsmile))

Это сообщение отредактировал(а) Legend - 22.3.2009, 18:06
PM MAIL   Вверх
Dmi3ev
Дата 22.3.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Legend, я же тебе сюда даже положил сравнение...

Добавлено через 1 минуту и 18 секунд
Цитата

if (LK.compare(ID) = 0)

тебе это даже не нужно... пользуйся старым добрым "=="


--------------------

PM MAIL   Вверх
Legend
Дата 22.3.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



sps ))
PM MAIL   Вверх
Legend
Дата 22.4.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Так значет написал я програмку )) всё работает.. только в конце пошол я лёгким путём.. и прежде в6вода резульата я вставил ;;ввод ИД;; .. шоб его сравнить и вывести только те результаты которые пренадлежат к этому определённому родителю. Собственно преподу это не понравилось.. хотела она шоб я не вводил определённого ИД , а шоб програмка сравнивала всех и в6водила всевожможнyе решения этой задачи ( тобиш всех родителей у кого есть внуки)  ... тут я даже растерялся как? как это сделать? Может ктото подскажет?  БУду ооочень благодарин. И ещо немогу разобраьтся почему лонг инт не совсем корpектно работает. Сперва хотел сделать Ид как целочисленное, но увы это только 8-значное число...а нужно мне 11.. Поэтому при вводе использую тока 3 -4 цифри)) собственно это не имеет значения

Код
#include<stdio.h>
#include<string.h>

int main()
{
   int n[10],i=1,t=1,d,k=1,b;
   long int Idrod[14];
   long int  a[10][9];
   char proverka[4];

   do {
      printf("Vvedite Id-roditelei(%d) = ",k);
      scanf("%ld",&Idrod[k]);
      do {
          printf("Vvedite 4islo detei = ");
          scanf("%d", &n[k]);
      } while ( (n[k] < 1) || (n[k] > 13) );

      for(i = 1; i <= n[k]; i++) {
         printf("Id-rebenka %d  = ", i);
         scanf("%ld", &a[k][i]);
      }
 
      printf("Zelaete dobavit e6e odnogo roditelja?(Y/N)- ");
      scanf("%s",proverka);
 
      ++k;
   } while(i<=10 &&  strcmp(proverka, "Y") != 1 && strcmp(proverka, "N") != 0 );

   i=0;
   do {
      printf("\n  Vvedite id roditelja dlja proverki na vnu4atost!- ");
      scanf("%ld", &d);
      t = 1;
      while (t <= k) {
          if (Idrod[t] == d) {
              i = t;
          }
     
          t++;
       }
   } while(i<=0);
   t = 1;
   d = 1;
   printf("U dedu6ki id=%ld  %d detej:\n", Idrod[i], n[i]);
   for(d=1;d<=n[i];d++) {
       printf("          %ld \n",a[i][d]);
   }
   t = 1;
   d = 1;
   while (t <= k) {
      d=1;
      while (d <= n[i]) {
         if (Idrod[t] == a[i][d]) {
            printf("   \n  Vnuki ot %ld", Idrod[t]);
            for(b=1; b <= n[t]; b++) {
               printf("\n          %ld ", a[t][b]);
            }

         }
         d++;
      }
      t++;

   }
   getchar();
   getchar();
}


Модератор: Пользуйся кнопкой "Код"
Модератор: Не забывай форматировать код

Это сообщение отредактировал(а) bsa - 23.4.2009, 00:21
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.