Молба за помощ по С++

За теми, които не са свързани с планинското колоездене. Използвайте го за всичко извън любимия ни спорт (други хобита, развлечения, прояви, интереси, проблеми и т.н.), за които искате да споделите/побъбрите/поспорите с останалите членове на форума.

Рейтинг за публикуване на тема / Рейтинг за отговор / Тежест: 700 / 700 / 5

Молба за помощ по С++

Мнениеот bounmaster » Съб Яну 27, 2007 10:17 am

Здравейте драги съфорумци,
пиша тази тема, защото съм изпаднал в беда. Учителят ми по С++ ми даде за домашно задачи, които за жалост по никакъв начин не мога да реша, но първо малко предистория:
Преди 20 дни си ударих главата лошо в един таван докато слизах по едни стълби и получих комоцио. В резултат на това не съм ходил 2 седмици на училище и изостанах доста драматично с материала. По тази причина учителят ми по С++ ми даде за домашна работа, която ще определи оценката за срока ми 3 задачи от които трябва да реша 2. Понеже обаче съм изпуснал много, въобще не знам какво да ги правя тези задачи. Призовавам всеки съфорумец с някакви познания по програмиране да откликне на зова ми за помощ, а именно да ми помогне с решаването на следните задачи:
Task 1. Write a program PRIME, that inputs a sequence of positive integers. The input
ends by 0. The number of the elements in the input is less than 1000 and each element is
less than 10000. Your program has to output the greatest prime number which is a
devisor of some number in the input.
Example
Input
12
28
0
Output
7
Task 2. Given are two rectangles with parallel sides to the coordinate axes. Write a
program RECT that outputs the value of the area of the common part of the rectangles.
The input data are two lines in the standard input, each line containing 4 integers (in a
range –999 ,…, 999) for the coordinate values of the lower left and the upper right points
of the rectangle.
Example
Input
1 1 2 2
1 1 3 3
Output
1
Task 3. Given is a sequence of N words (1 < N < 100), each on a separate line in the
standard input. Some words may occur twice or more times. Write a program MAX that
outputs the most frequently occurred word. If there exist more then one such word, your
program has to output the first of them. On the first line in the standard input, the number
N of the following words is given. Each word contains less then 50 letters.
Example
Input
5
aaa
c
bbb
bbb
c
Output
c
Ще съм изключително благодарен на всеки , който помогне с нещо.
Предварително ви благодаря за вниманието.

ПС: Моля, обясняваите като за абсолютен профан, защото съм си такъв. В крайна сметка това ми е 1ви семестър, вкойто се занимавам с програмиране.
bounmaster
 
Мнения: 147
Рейтинг: 1200
Регистриран на: Чет Юни 23, 2005 9:18 pm
Местоположение: Bulgaria

Re: Молба за помощ по С++

Мнениеот chill » Съб Яну 27, 2007 1:23 pm

По принцип не решавам чужди домашни (безплатно :evil:), но мога да помогна със съвети.
bounmaster написа:Task 1. Write a program PRIME, that inputs a sequence of positive integers. The input
ends by 0. The number of the elements in the input is less than 1000 and each element is
less than 10000. Your program has to output the greatest prime number which is a
devisor of some number in the input.
Example
Input
12
28
0
Output
7

Предполагам, можеш да направиш въвеждането, така че да получиш масив (или std::vector) с числата. Понеже числата са малки, аз бих генерирал предваритално масив със всички прости числа по-малки от 100, например с решетото на Ератостен. След това просто се разхождаш по масива в обратен ред и за всяко просто число проверяваш дали дели някое от въведените числа - ако дели печаташ и излизаш, иначе продължаваш.

Task 2. Given are two rectangles with parallel sides to the coordinate axes. Write a
program RECT that outputs the value of the area of the common part of the rectangles.
The input data are two lines in the standard input, each line containing 4 integers (in a
range –999 ,…, 999) for the coordinate values of the lower left and the upper right points
of the rectangle.
Example
Input
1 1 2 2
1 1 3 3
Output
1

Първо проверяваш дали се пресичат. Те се пресичат, освен ако единия не е изцяло под, над, отляво или отдясно на другия. След това подреждаш x- и y -координатите в нарастващ ред и вземаш средните две - те са координатите на сечението.

Task 3. Given is a sequence of N words (1 < N < 100), each on a separate line in the
standard input. Some words may occur twice or more times. Write a program MAX that
outputs the most frequently occurred word. If there exist more then one such word, your
program has to output the first of them. On the first line in the standard input, the number
N of the following words is given. Each word contains less then 50 letters.
Example
Input
5
aaa
c
bbb
bbb
c
Output
c


Правиш един масив от двойки (стринг, брой). За всяка дума от входните данин тръгваш по масива от индекс 0 до текущия брой елементи като сравняваш току-що думата с тази в текущия елемент - ако съвпадат, увеличаваш броя срещания на думата и започваш отначало със следващата дума, ако не - продължаваш. Ако стигнеш до края без да си намерил думата - добавяш нов елемент с тази дума и брой 1 и увеличаваш броя на елементите. Като приключиш със всички думи, се разхождаш още веднъж по масива да намериш максималната бройка.
Pain is weakness leaving the body.
Аватар
chill
 
Мнения: 636
Рейтинг: 1675
Регистриран на: Сря Авг 23, 2006 2:50 pm

Мнениеот bounmaster » Съб Яну 27, 2007 1:48 pm

@Chill: Изключително много ти благодаря за помощта, но чесно да си призная нищо не разбрах от това което си написал. Рабирам,че далеч не ти се занимава с профани като мен, но ако случайно намериш време, моля те обясни ми като за тотален начинаещ.
bounmaster
 
Мнения: 147
Рейтинг: 1200
Регистриран на: Чет Юни 23, 2005 9:18 pm
Местоположение: Bulgaria

Мнениеот did » Съб Яну 27, 2007 5:10 pm

bounmaster написа:@Chill: Изключително много ти благодаря за помощта, но чесно да си призная нищо не разбрах от това което си написал. Рабирам,че далеч не ти се занимава с профани като мен, но ако случайно намериш време, моля те обясни ми като за тотален начинаещ.


:D :D :D :D :D

Твоите 3 (три) задачи отнемат общо около 20-30 минути на човек, който знае какво да прави, а може и по-малко. Такива специалисти във форума има много, но обикновено почасовото им заплащане е доооооста по-високо от това на учител по информатика в средно училище. Така че, най-изгодно ще ти е ако просто идеш и помолиш някой на ти ОБЯСНИ задачите, а не да ти ги даде решени наготово. Обяснението тук няма как да стане, защото липсва обратна връзка. chill ти даде добри идеи като за начинаещ, но явно ти искаш не просто някой да ти покаже кое ястие да си купиш, ами и да ти го сдъвче. Ако ми беше подръка, с удоволствие щях да ти отделя малко време, защото мисля, че долавям някакви наченки на желание за учене (предембрионални). Предвид възможния начин на комуникация, обаче, смятам това за безсмислено начинание.

Сигурен съм, че на chill щеше да му е по-лесно да ти даде кода, отколкото да ти го обясни, но поради същите причини, които и аз съм посочил, е предпочел да се насочи към нетипични за един информатик изразни средства.
Аватар
did
 
Мнения: 16523
Рейтинг: 2000
Регистриран на: Вто Окт 14, 2003 3:00 pm
Местоположение: Пловдив

Мнениеот bounmaster » Съб Яну 27, 2007 6:09 pm

@Дид: Напълно съм съгласен с това че форума не е най- добрия начин да получа обяснение (решение и не искам), но поради травмата ми и доскорошното ми комоцио не съм имал възможността да говоря с учителя ми по информатика, а във вторник трябва да предам това домашно. Съучениците ми, от своя страна, въобще дори не се вясват на часове, така че и те нищо не могат да ми обяснят. За това се обърнах към съфорумците: просто от нямане към кого другиго. :dunno:
bounmaster
 
Мнения: 147
Рейтинг: 1200
Регистриран на: Чет Юни 23, 2005 9:18 pm
Местоположение: Bulgaria

Мнениеот did » Съб Яну 27, 2007 6:21 pm

bounmaster написа:@Дид: Напълно съм съгласен с това че форума не е най- добрия начин да получа обяснение (решение и не искам), но поради травмата ми и доскорошното ми комоцио не съм имал възможността да говоря с учителя ми по информатика, а във вторник трябва да предам това домашно. Съучениците ми, от своя страна, въобще дори не се вясват на часове, така че и те нищо не могат да ми обяснят. За това се обърнах към съфорумците: просто от нямане към кого другиго. :dunno:

Съжалявам за травмите и комоциото, но въпреки всичко, покажи първо ти някакво лично усилие:

Дефинирай типовете данни, направи въвеждането на данните, дай някакви твои идеи, базирани на chill-овите или пък съвсем различни. Не е важно да са оптимални, но нека да са твои, пък ... даже и грешни.

Обещавам да ти покажа грешките и с малко общи усилия да попълним липсващата част от кода. Ако аз не го направя (щото от понеделник ще съм на път, с променлив достъп до интернет), убеден съм ,че други ще ти помогнат. Ти, обаче, дай първо твоите идеи, покажи поне малко лично усилие, а след това и помощта ще дойде.
Аватар
did
 
Мнения: 16523
Рейтинг: 2000
Регистриран на: Вто Окт 14, 2003 3:00 pm
Местоположение: Пловдив

Мнениеот bikerider » Съб Яну 27, 2007 6:48 pm

@bounmaster: интересно ми е каква работа биха ти свършили готови решения, ако не ги разбираш?
Do or do not. There is no try...
Аватар
bikerider
 
Мнения: 17273
Рейтинг: 2000
Регистриран на: Вто Окт 07, 2003 10:25 am
Местоположение: Eutropia

Мнениеот bounmaster » Съб Яну 27, 2007 7:13 pm

@Дид: Тъй като домашното ни е да решим само 2 от 3те задачи, а аз не можах напълно да разбера какво се изисква за втора задача, реших че е най добре да се шробвам с 1ва и 3та. Това, което измислих за 1ва е:
#include <iostream>
using namespace std;

const int N=1000;
int a[N];
int main()
{ (ideqta mi za cin e izpolzwaiki "while" da go nakaram da cin-wa 4isla dokato a =0
da si priznaq 4esno oba4e ne znam kak)
sled towa bi trqbwalo da go nakaram da izkara wsi4ki prime divisors na wsqko a
s funkciqta:
int p=2;
while(p<=a)
{while(a%p==0)
void insert (int v, int b=0)
{b[v]=p}
p++}
i sled towa da izwadq nai golqmoto 4islo ot masiva b s funkciqta:
int max=b[0];
for(int i=1; i<v; i++)
if(max<a[i]) max=a[i];
cout << max;
За трета задача успях да сътворя само това:
#include <iostream>
using namespace std;
int n;
int main()
{
cin >> n;
int i=0
while(int i<=n)
cin >> string str(i);
i++
problema w slu4aq e 4e ne znam kak da naprawq array ot stringowe, no ako si predstawim 4e nqkak sam uspql
i tozi string se kazwa a[i]
to bi trqbwalo da prodylja s:
int c=0
int k=-1;
for(int d=0;d<n;d++)
if(string str(i)==a[i]) {k=i; break;}
if k>-1 c++;
cout << c

ПС: надявам се не си се отчаял напълно от мен и моите невероятни способности в програмирането.
ППС: Извинявам се на Админ, че повече от половината ми пост е а шлиокавица, но DEV C++ (средата която използваме в училище не разбира кирилица). Моля не препикавайте поста ми. :crap:
bounmaster
 
Мнения: 147
Рейтинг: 1200
Регистриран на: Чет Юни 23, 2005 9:18 pm
Местоположение: Bulgaria

Мнениеот PtD » Съб Яну 27, 2007 10:18 pm

bikerider написа:@bounmaster: интересно ми е каква работа биха ти свършили готови решения, ако не ги разбираш?


Ее, айде, айде, колко курсови работи съм написал, винаги минават. Пък сещай се някой ако не вдява от програмиране, за 1 курс колко ще се научи...

Изобщо курсът по програмиране е тотално излишен за специалности извън компютърните науки. Нооо, нали трябва да готвим всестранно развити личности...
Дреболия, обикновено нещо!
Аватар
PtD
 
Мнения: 10901
Рейтинг: 2000
Регистриран на: Пон Ное 17, 2003 3:36 pm

Мнениеот bounmaster » Съб Яну 27, 2007 10:37 pm

@bikerider: Може би не умея да се изразявам достатачно ясно, но чесно да си призная не виждам каде съм поискал готови решения на задачите. :beer:
bounmaster
 
Мнения: 147
Рейтинг: 1200
Регистриран на: Чет Юни 23, 2005 9:18 pm
Местоположение: Bulgaria

Мнениеот bikerider » Нед Яну 28, 2007 8:34 am

PtD написа:Нооо, нали трябва да готвим всестранно развити личности...


A, говори ми после за методиките в българското уни :spin:

@bounmaster: ами според мен chill ти е написал всичко, от което имаш нужда... за останалото би ти свършил работа всеки учебник по C++...
Do or do not. There is no try...
Аватар
bikerider
 
Мнения: 17273
Рейтинг: 2000
Регистриран на: Вто Окт 07, 2003 10:25 am
Местоположение: Eutropia

Мнениеот bounmaster » Чет Фев 01, 2007 5:20 pm

Благодаря на всички, които се отзоваха, и най-вече на chill, на когото дължа поне 1 бира :beer: . С този си пост искам да се похваля, че с помощта получена от форума+ един онлине учебник по С++, успях да предам правилно домашно. Още веднъж, благодаря на всички.
bounmaster
 
Мнения: 147
Рейтинг: 1200
Регистриран на: Чет Юни 23, 2005 9:18 pm
Местоположение: Bulgaria


Назад към Други

Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани и 1 госта