Титла: Грешка в С++ програма. Публикувано от: renesans в May 22, 2010, 19:38 Ето го кода:
Код
Обаче при опит да въведа Име и Фамилия между които има шпация нещата стават много омазани. Пробвах да е: char ime[60]; char *ime; обаче нещата са същите. Някакви идеи? Титла: Re: Грешка в С++ програма. Публикувано от: b2l в May 22, 2010, 19:50 Код: man gets Титла: Re: Грешка в С++ програма. Публикувано от: borovaka в May 22, 2010, 20:05 Миля, че това ще ти помогне:
http://www.cplusplus.com/reference/iostream/istream/getline/ ($2) Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 22, 2010, 20:06 Това не е ли чиста С функция? Титла: Re: Грешка в С++ програма. Публикувано от: borovaka в May 22, 2010, 20:16 Ето ти цитат от " Програмиране на С++ първа част" на Магдалина Тодорова.
Функция getline Синтаксис cin.getline(<var_str>, <size> [,<char>]опц) където
Семантика Въвежда от буфера на клавиатурата редица от символи с максимална дължина <size>-1. Въвеждането продължава до срещане на символа зададен в <char>, или до въвеждане на <size>-1 символа (ако междувременно не е достигнат символа <char>). Въведената редица от символи се преобразува в низ и става стойност на променливата <var_str>. п.с. Между другото този учебник е хубав, ако не си го чел го прегледай. Аз тепърва се захващам с С++ и пише на достатъчно достъпен език. Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 22, 2010, 20:23 Ами благодаря за инфото, задачата е на приятелката ми обаче аз нямам никакво голямо желание да се захващам със С++ в детайли но тя пък се ужасява от програмирането още (не питайте какво учи) има някакво понятие от С но някой неща не са ми ясни в С++ за да и помогна.
Ще погледна линковете, но неразбрах коя е книгата всъщност. Мисля че ще ми се наложи да питам още за задачата ако не се справя или поне за полезни линкове. Титла: Re: Грешка в С++ програма. Публикувано от: borovaka в May 22, 2010, 20:25 Книгата ти я казах "Програмиране на С++ първа част" се казва автор е Магдалина Тодорова от СУ е мисля.
п.с. Има я и в нета обаче си я намери сам тъй като не знам дали има съгласие от автора за електронно разпространение. Титла: Re: Грешка в С++ програма. Публикувано от: chen_dzen в May 22, 2010, 20:33 ами ти си дефинирал масив от 60 символа .След исписването на специален символ интервал следващите данни отивът във входния буфер .По добре помисли вариант с три променливи или двумерен масив.
ама всъщност има много готина функция getline(). ??? ;D Титла: Re: Грешка в С++ програма. Публикувано от: c111100101 в May 22, 2010, 21:14 Що не дадеш условието на задачата?
Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 22, 2010, 23:06 Да се състави програма за обслужване на ски-състезание. За всеки състезател се въвежда следната информация: номер, име и фамилия, постижение, държава. Програмата да дава възможност за получаване на следните резултати:
1. Извеждане на списък на всички състезатели с въведените данни за тях; 2. Извеждане на списък на всички състезатели, подредени в низходящ ред на постиженията им. Ако има състезатели с едно и също постижение, по-напред в списъка да се изведе този, чието име започва с по-предна буква от азбуката. 3. Пресмятане и извеждане на средното постижение на състезателите; 4. Извеждане на списък на всички състезатели от дадена държава, които имат постижение по-ниско от средното за състезанието. Титла: Re: Грешка в С++ програма. Публикувано от: Arvigeus в May 22, 2010, 23:36 Елементарно предложение: съхрани името и фамилията като 2 отделни променливи. cin>> има навика да разделя думите. И после cin>>Ime>>Familia;
Титла: Re: Грешка в С++ програма. Публикувано от: borovaka в May 22, 2010, 23:49 Абе какъв е тоя мазохизъм какво му е на getline че предлагате да се заемат две променливи със cin? Не съм програмист и съм зле със С++ ако е по-удачно така моля някой да ми каже защо?
Титла: Re: Грешка в С++ програма. Публикувано от: schemer в May 22, 2010, 23:51 Елементарно предложение: съхрани името и фамилията като 2 отделни променливи. cin>> има навика да разделя думите. И после cin>>Ime>>Familia; // offtopic Компютрите нямат навици, а ясно дефинирано поведение. Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 23, 2010, 22:54 Добре де какво правя не както трябва че cin.getline() не работи коректно?
При компилация компилатора не отчита грешка обаче при изпълнение редовете в които извиквам фикцията се прескачат и се минава направо на тези дето са си само с cin? Как може да мога да я направя да работи нормално в С а в С++ да не става? Титла: Re: Грешка в С++ програма. Публикувано от: remotex в May 25, 2010, 08:45 1. Какво значи "се прескачат" - така се получава когато начинещите слагат по много оператори на един ред - пробвай да ги разделиш само по един оператор на ред и тогава пак кажи дали се прескачат.
2. Покажи кода да видим как точно я викаш тази функция getline() 3. borovaka правилно те е насочил. И аз миcля, че това ще ти помогне: http://www.cplusplus.com/reference/iostream/istream/getline/ Като трябва да внимаваш : според това какво ще ползваш string или char * да извикаш правилния вариаант на функцията Титла: Re: Грешка в С++ програма. Публикувано от: borovaka в May 25, 2010, 15:19 Ето пример за програма използваща getline със string:
Код
А ето пример и с използване на char. Код
п.с. Примерите са от сайта който ти дадох. Тъй като и аз съм съвсем начинаещ моля ако давам грешни съвети някой да ме поправи. Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 27, 2010, 16:31 Айде сега да видим къде съм сгрешил?
Код
Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 27, 2010, 17:49 Оправих се като добавих cin.ignore (); на подходящо място.
Титла: Re: Грешка в С++ програма. Публикувано от: borovaka в May 27, 2010, 17:52 Само да те попитам тази функция защо я викаш от тип int. Изходни стойности не си посочил. Извикай я с void и дай един return; накрая не, че е задължителен :)
Титла: Re: Грешка в С++ програма. Публикувано от: renesans в May 27, 2010, 18:47 Ами не е птоблем това понеже това е само част от финкцията не е всичко което се случва в нея.
|