Автор |
Сообщение |
Dellorian
[1.7]
|
-6
C++ задачка
Есть предложение (вводим с клавиатуры) , слова разделены пробелами (естественно) , нужно вывести из этого предложения ( в отдельные строки) слова так , чтобы получились два предложения так , чтобы в первом были четные слова , а во втором нечетные .
При этом нужно сделать всё это с процедурками и если не сложно , то еще и с комментариями . (Тема : строки)
Уважаемые эксперты , выручайте .
|
22 дек 2013, 12:56 |
|
|
Daniel
[11.7]
|
1
C++ задачка
Раковые больные, просто раковые больные.
|
22 дек 2013, 13:11 |
|
|
Amazing
[0.9]
|
0
C++ задачка
Четное слово - это слово с четным количеством символов? Уверен, что есть метод который разделяет предложение на массив стринг со словами. Хотя, я не знаю зачем я это пишу, ты должен стоять в кунсткамере на соседней полке с предыдущим "математиком".
|
22 дек 2013, 13:18 |
|
|
Бинари
[0.1]
|
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 |
|
|
Youngroga
[0.2]
|
0
C++ задачка
осторожно, cin считывает строку до пробела, так что считывай гетлайном.
а в остальном вообще никаких проблем быть не должно. только мне кажется четное слово - четное по порядку в предложении, хотя сложность не меняется
|
22 дек 2013, 13:33 |
|
|
Dellorian
[1.7]
|
0
C++ задачка
Да , я знаю про гетлайн , да и вообще смысл задачи и как сделать мне ясно . У меня проблема с алгоритмом и оформлением (очень большая)
|
22 дек 2013, 13:35 |
|
|
Root
[0.1]
|
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 |
|
|
Amazing
[0.9]
|
0
C++ задачка
Кстати, где учишься и на каком курсе? Просто интересно где начинают учить на плюсах кодить.
|
22 дек 2013, 16:27 |
|
|
Бинари
[0.1]
|
0
C++ задачка
Говнокод на С++, ребята, даже если рабочий.
Надо разбивать логику и отображение данных.
По условию на входе в функцию мы имеем одну строку, а вернуть надо 2 строки (с четными и нечетными словами).
Все остальное (векторы, добавление пробелов, 3 вложенных цикла while) лишняя лабуда.
|
22 дек 2013, 16:45 |
|
|
DDUH
[41.4]
|
2
C++ задачка
PunxNotDead писал(а):
Чем больше вот таких "спициалистаф", тем больше моя зарплата.
|
22 дек 2013, 16:57 |
|
|
Dellorian
[1.7]
|
0
C++ задачка
Amazing писал(а):
Кстати, где учишься и на каком курсе? Просто интересно где начинают учить на плюсах кодить.
"Алтайский пром эконом колледж" курс-2
|
22 дек 2013, 17:44 |
|
|
Tremere
[7.6]
<Черёмуха>
Сервер: Страж Смерти
2х2: 1484
3х3: 96
|
-2
C++ задачка
А когда я сказал, что он даун еще при более тупых запросах, то на меня наехали
з.ы ТС. если ты, по твоим же словам, знаешь алгоритм решения, то не можешь читнуть 2-3 главы по синтаксису на С++ ?
|
22 дек 2013, 17:50 |
|
|
Cmeex
[6.5]
|
0
C++ задачка
Amazing писал(а):
Кстати, где учишься и на каком курсе? Просто интересно где начинают учить на плюсах кодить.
В СПбГУ начинают учить на ++ кодить с первого курса... ну, 5 лет назад точно...
|
22 дек 2013, 18:05 |
|
|
brioriy
[2.1]
|
0
C++ задачка
А почему бы, собственно, не считывать cin'ом, тогда и из строчки выделять слова не придется, сразу через одно сортируешь в нужное слово.
А вообще странно, это серьезно в институтах проходят? Больше похоже на программу 9го класса
|
22 дек 2013, 18:05 |
|
|
xrebtoprav
[0.5]
<Сладкая Вата>
Сервер: 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 |
|
|
Amazing
[0.9]
|
0
C++ задачка
Так как я далек от плюсов, то выглядит это совсем не читабельно. Ни табуляций, никакого оформления... Как ты сам это читаешь то?
|
22 дек 2013, 21:04 |
|
|
xrebtoprav
[0.5]
<Сладкая Вата>
Сервер: Soulflayer
Рейтинг поля боя: 2608
2х2: 1656
3х3: 2120
|
0
C++ задачка
я нормально читаю, просто c+c c+v убивает нормальный вид
|
22 дек 2013, 21:07 |
|
|
Root
[0.1]
|
0
C++ задачка
Бинари писал(а):
Говнокод на С++, ребята, даже если рабочий.
Надо разбивать логику и отображение данных.
По условию на входе в функцию мы имеем одну строку, а вернуть надо 2 строки (с четными и нечетными словами).
Все остальное (векторы, добавление пробелов, 3 вложенных цикла while) лишняя лабуда.
Поехавший,в своем варианте я инициализировал 2 строки(even и odd),одна содержит четные слова а другие нечетные.Где ты тут говнокод увидел?Я не спорю,что можно обойтись без циклов while используя strtok и прочую херню,я кинул рабочий а не идеальный вариант и свою критику оставь при себе
|
22 дек 2013, 22:47 |
|