C++ задачка  
Автор Сообщение

-6
Сообщение C++ задачка

 

Есть предложение (вводим с клавиатуры) , слова разделены  пробелами (естественно) , нужно вывести из этого предложения ( в отдельные строки) слова так , чтобы получились два предложения так , чтобы в первом были четные слова , а во втором нечетные .

При этом нужно сделать всё это с процедурками и если не сложно , то еще и с комментариями . (Тема : строки)

Уважаемые эксперты , выручайте .



22 дек 2013, 12:56
Профиль

1
Сообщение C++ задачка

Раковые больные, просто раковые больные. :facepalm



22 дек 2013, 13:11
Профиль Skype

0
Сообщение C++ задачка

Четное слово - это слово с четным количеством символов? Уверен, что есть метод который разделяет предложение на массив стринг со словами. Хотя, я не знаю зачем я это пишу, ты должен стоять в кунсткамере на соседней полке с предыдущим "математиком".



22 дек 2013, 13:18
Профиль Skype

0
Сообщение C++ задачка

Вариант на PHP

 

Код:

function string2parts($string)

{

  $even = array();

  $odd = array();

  $words = explode(' ', $string);

 

  for ($i=0, $c=count($words); $i<$c; $i++) {

    $i % 2 ? $odd[] = $words[$i] : $even[] = $words[$i];

  }

 

  return array(

    implode(' ', $even),

    implode(' ', $odd)

  );

}



22 дек 2013, 13:18
Профиль






Сервер: Outland
2х2: 191
0
Сообщение C++ задачка

осторожно, cin считывает строку до пробела, так что считывай гетлайном.

а в остальном вообще никаких проблем быть не должно.
только мне кажется четное слово - четное по порядку в предложении, хотя сложность не меняется :D



22 дек 2013, 13:33
Профиль

0
Сообщение C++ задачка

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



22 дек 2013, 13:35
Профиль

1
Сообщение C++ задачка

На процедурки сам раскинешь,если не поехавший

Код:

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;

void main() {
int i=0;
char str[256];string buffer,even,odd;
cout<<"Input string:";
gets(str);
int l=strlen(str);
while(str[i]) {
while (str[i]==' ') i++;
if(!str[i]) break;
while((str[i]!=' ')&&(str[i]!='\0')) buffer+=str[i++];
if(buffer.length()%2 != 0) odd+=buffer+" ";
else even+=buffer+" ";
buffer="";
}
cout<<"Even:"<<even<<endl;
cout<<"Odd:"<<odd<<endl;
cout<<"Done!Press any key to exit..";
getch();
}

Код:

Input string:Шишка встанет возбудимся
Even:возбудимся
Odd:Шишка встанет
Done!Press any key to exit..

 



22 дек 2013, 15:14
Профиль

1
Сообщение C++ задачка

Если под "четностью" понимается порядок следования слова в предложении, то:

Код:

#include <iostream>
#include <string>
#include <vector>

 

using namespace std;

 

void addWord(vector<string>& words, const string& word) //добавление непустого слова в вектор
{
  if (word != "")
    words.push_back(word);
}

 

void eraseFirstSymbol(string& s) //удаление первого символа из строки
{
  if (s.size())
    s.erase(0, 1);
}

 

int main()
{
  string sentence;
  getline(cin, sentence); //ввод предложения
  sentence += " "; //добавляем пробел в конец строки для удобства поиска слов
  string word;
  vector<string> words; //вектор найденных слов

 

  //поиск слов
  for (auto i : sentence)
    if (i == ' ')
    {
      addWord(words, word);
      word = "";
    } else
      word += i;
  string s_odd; //строка из "нечетных слов"
  string s_even; //строка из "четных слов"

 

  //составляем предложение из "четных" и "нечетных слов"
  for (int i = 0; i < words.size(); ++i)
    if ((i + 1) % 2 == 1)
      s_odd += " " + words[i];
  else
    s_even += " " + words[i];
  eraseFirstSymbol(s_odd);
  eraseFirstSymbol(s_even);
  cout << s_even << endl;
  cout << s_odd << endl;
}



22 дек 2013, 15:39
Профиль

0
Сообщение C++ задачка

Кстати, где учишься и на каком курсе? Просто интересно где начинают учить на плюсах кодить.



22 дек 2013, 16:27
Профиль Skype

0
Сообщение C++ задачка

Говнокод на С++, ребята, даже если рабочий. 

 

Надо разбивать логику и отображение данных.

По условию на входе в функцию мы имеем одну строку, а вернуть надо 2 строки (с четными и нечетными словами).

 

Все остальное (векторы, добавление пробелов, 3 вложенных цикла while) лишняя лабуда.



22 дек 2013, 16:45
Профиль

2
Сообщение C++ задачка

PunxNotDead писал(а):

Чем больше вот таких "спициалистаф", тем больше моя зарплата.



22 дек 2013, 16:57
Профиль WWW

0
Сообщение C++ задачка

Amazing писал(а):

Кстати, где учишься и на каком курсе? Просто интересно где начинают учить на плюсах кодить.

"Алтайский пром эконом колледж" курс-2



22 дек 2013, 17:44
Профиль



<Черёмуха>


Сервер: Страж Смерти
2х2: 1484
3х3: 96
-2
Сообщение C++ задачка

А когда я сказал, что он даун еще при более тупых запросах, то на меня наехали ;D

 

з.ы ТС. если ты, по твоим же словам, знаешь алгоритм решения, то не можешь читнуть 2-3 главы по синтаксису на С++ ?



22 дек 2013, 17:50
Профиль

0
Сообщение C++ задачка

Amazing писал(а):

Кстати, где учишься и на каком курсе? Просто интересно где начинают учить на плюсах кодить.

В СПбГУ начинают учить на ++ кодить с первого курса... ну, 5 лет назад точно...

 



22 дек 2013, 18:05
Профиль

0
Сообщение C++ задачка

А почему бы, собственно, не считывать cin'ом, тогда и из строчки выделять слова не придется, сразу через одно сортируешь в нужное слово.

А вообще странно, это серьезно в институтах проходят? Больше похоже на программу 9го класса



22 дек 2013, 18:05
Профиль



<Сладкая Вата>


Сервер: Soulflayer
Рейтинг поля боя: 2608
2х2: 1656
3х3: 2120
0
Сообщение C++ задачка

Код:

#include <iostream>
#include <math.h>
#include <conio.h>
#include <locale.h>
#define abs(d) (d<0? -d : d)

using namespace std;

int main()
{
float sum=0,a,b,c,d,x0,h,max=0,ak,x=0,p=0,result=exp(p);
int i,k,n,m;
cout<<"Enter a,b,c,d,x0,h,m,n\n";
cin>>a>>b>>c>>d>>x0>>h>>m>>n;
if(b>c)
max=b;
if(b<c)
max=c;
cout<<"Max of b,c= "<<max<<"\n";
p=max-a-log(abs(d)+3);
cout<<"p= "<<p<<"\n";
for (i=1;i<=m,i++;)
{x=x0+(i-1)*h;
cout<<"x= "<<x<<"\n";
ak=-x/(result*2);
cout<<"ak= "<<ak<<"\n";
sum=ak;
for(k=2;k<=n;k++)
{
ak=-ak*x/(result*2*k);
cout<<"ak= "<<ak<<"\n";
if(k!=2)
sum=sum+ak;
}

cout <<"Summa chlenov krome vtorogo= "<<sum<<"\n";
};
getch();
return 0;

}



Программа должна считать сумму членов последовательности, кроме второго. n и m равны 5, если что. На деле всё это дело происходит до бесконечности и не останавливается там где нужно. Где собственно ошибка? ))



22 дек 2013, 20:36
Профиль

0
Сообщение C++ задачка

Так как я далек от плюсов, то выглядит это совсем не читабельно. Ни табуляций, никакого оформления... Как ты сам это читаешь то?



22 дек 2013, 21:04
Профиль Skype



<Сладкая Вата>


Сервер: Soulflayer
Рейтинг поля боя: 2608
2х2: 1656
3х3: 2120
0
Сообщение C++ задачка

я нормально читаю, просто c+c c+v убивает нормальный вид



22 дек 2013, 21:07
Профиль

0
Сообщение C++ задачка

Бинари писал(а):

Говнокод на С++, ребята, даже если рабочий. 

 

Надо разбивать логику и отображение данных.

По условию на входе в функцию мы имеем одну строку, а вернуть надо 2 строки (с четными и нечетными словами).

 

Все остальное (векторы, добавление пробелов, 3 вложенных цикла while) лишняя лабуда.

 

Поехавший,в своем варианте я инициализировал 2 строки(even и odd),одна содержит четные слова а другие нечетные.Где ты тут говнокод увидел?Я не спорю,что можно обойтись без циклов while используя strtok и прочую херню,я кинул рабочий а не идеальный вариант и свою критику оставь при себе



22 дек 2013, 22:47
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru