Премини към съдържанието

Препоръчан отговор


Здравейте! Имам три задачи по Програмиране: 1. Създайте програма с функция която проверява дали масив от 10 цели числа съдържа 0. 2. Създайте програма с функция която проверява дали масив от 10 цели числа е подреден в низходящ ред. 3. Създайте програма с функция която брои думите в символен низ, записан в масив. Основните неща ги знам, нямам проблем с функциите, обаче не мога в 1. да направя, така че тези 10 цели цисла да се въвеждат от клавиатурата. В 2. алгоритъма не ми е много ясен, аз си мисля, че трябва програмата по някакъв начин да проверява дали едно число е по-малко от предишното? За 3. не знам какъв оператори или функция да използвам която да ми брои думите, знам само за полетата, но по този начин ми брои букви и празни мести. Мисля, че можеше по някакъв начин да направя, така че програмата да ми брои празните места са, а те отговарят на броя на думите? Проблема с въвеждането от клавиатура присъства при всички задачи. Благодарим! :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте!

Имам три задачи по Програмиране:

1. Създайте програма с функция която проверява дали масив от 10 цели числа съдържа 0.

2. Създайте програма с функция която проверява дали масив от 10 цели числа е подреден в низходящ ред.

3. Създайте програма с функция която брои думите в символен низ, записан в масив.

Основните неща ги знам, нямам проблем с функциите, обаче не мога в 1. да направя, така че тези 10 цели цисла да се въвеждат от клавиатурата. В 2. алгоритъма не ми е много ясен, аз си мисля, че трябва програмата по някакъв начин да проверява дали едно число е по-малко от предишното? За 3. не знам какъв оператори или функция да използвам която да ми брои думите, знам само за полетата, но по този начин ми брои букви и празни мести. Мисля, че можеше по някакъв начин да направя, така че програмата да ми брои празните места са, а те отговарят на броя на думите? Проблема с въвеждането от клавиатура присъства при всички задачи.

Благодарим! :)

като начало прочетете тази тема

http://www.kaldata.com/forums/index.php?showtopic=188001

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

Ето първата задача с указатели:

#include <iostream>
using namespace std;
void func1(int *n);

int main()
{
	int num[11];
	cout << "Enter 10 numbers: " << endl;
	for(int i=0;i<=10;i++)
	{
		  cin >> num[i];
	}
	func1(num);

	return 0;
}
void func1(int *n)
{
	for(int i=0;i<11;i++)
	{
		if(n[i] == 0)
		{
			cout << "This array has 0" << endl;
		}
		else cout << "There isn't 0 in the array" << endl;
	}
}
Редактирано от frozener (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

Ето първата задача с указатели:

#include <iostream>
using namespace std;
void func1(int *n);

int main()
{
	int num[11];
	cout << "Enter 10 numbers: " << endl;
	for(int i=0;i<=10;i++)
	{
		  cin >> num[i];
	}
	func1(num);

	return 0;
}
void func1(int *n)
{
	for(int i=0;i<11;i++)
	{
		if(n[i] == 0)
		{
			cout << "This array has 0" << endl;
		}
		else cout << "There isn't 0 in the array" << endl;
	}
}

Благодаря! Само не разбрах това i от къде идва?

като начало прочетете тази тема

http://www.kaldata.c...howtopic=188001

Добре, къде ми е грешката? Заглавието? или това, че пуснах темата и в Помощ за задачи на C/C++ (merged). Просто ми трябва отговор за утре затова пуснах тази тема. Съжалявам ако съм причинил проблеми, било е несъзнателно! :)

Редактирано от ToDiR0S (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ето първата задача с указатели:

Два въпроса:

Защо функциите ти взимат параметър указател?

Защо размерът на масива е 11?!

Благодаря! Само не разбрах това i от къде идва?

Добре, къде ми е грешката? Заглавието? или това, че пуснах темата и в Помощ за задачи на C/C++ (merged). Просто ми трябва отговор за утре затова пуснах тази тема. Съжалявам ако съм причинил проблеми, било е несъзнателно! :)

Променливата i е дефинирана на два пъти като локална в двата цикъла for в кода на frozener. Използва се за съхранение на стойността на брояча.

Грешката ти е, че тук се опитваме да не пишем домашни наготово защото е ужасно вредно.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Променливата i е дефинирана на два пъти като локална в двата цикъла for в кода на frozener. Използва се за съхранение на стойността на брояча.

Грешката ти е, че тук се опитваме да не пишем домашни наготово защото е ужасно вредно.

Това не ми е домашно, просто задачи които мислех че мога да направя и да ги покажа на г-жата утре, но явно не мога. Имам ги от цяла седмица, и пробвах няколко пъти да ги направя сам, вкъщи и в училище, но не се получи. Реших че ще е по-лесно ако направо искам готовия код, и сам да го разбера после, или евентуално да питам г-жата, вместо моля за обяснения тук. Благодаря все пак.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

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

Това, че не можеш да направиш тези задачи + въпросите които задаваш, показва че ти липсват много основни знания. Както сам видя, четенето дори на много елементарен код не ти се отдаде. По-добре е да наблегнеш на теорията.

Реших че ще е по-лесно ако направо искам готовия код, и сам да го разбера после, или евентуално да питам г-жата, вместо моля за обяснения тук. Благодаря все пак.

Аз пък - точно обратното - предпочитам да видя какво си написал и да ти обясня къде си сбъркал.
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Това, че не можеш да направиш тези задачи + въпросите които задаваш, показва че ти липсват много основни знания. Както сам видя, четенето дори на много елементарен код не ти се отдаде. По-добре е да наблегнеш на теорията.

Аз пък - точно обратното - предпочитам да видя какво си написал и да ти обясня къде си сбъркал.

Ами обучавам се предимно сам, в училище само ме изпитват. Часовете стигат само за обянения и не правиме почти никакви упражнения, или ако правим са прекалено лесни. Все пак не съм програмист, уча от скоро, за мен тези неща не са толкова лесни. Тогава следващия път ще знам от кой да искам обяснение. :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Все пак не съм програмист, уча от скоро, за мен тези неща не са толкова лесни. Тогава следващия път ще знам от кой да искам обяснение. :)

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

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

Два въпроса:

Защо функциите ти взимат параметър указател?

Защо размерът на масива е 11?!

Променливата i е дефинирана на два пъти като локална в двата цикъла for в кода на frozener. Използва се за съхранение на стойността на брояча.

Грешката ти е, че тук се опитваме да не пишем домашни наготово защото е ужасно вредно.

Ами направил съм го с указател, за да ми е по-лесно като минавам през елементите.

Размерът на масива по принцип трябва да е strlen(item-1) или 11 както съм написал. Дали е така не съм 100% сигурен. Аз в училище не уча C++, а Logo.

Редактирано от frozener (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ами направил съм го с указател, за да ми е по-лесно като минавам през елементите. Размерът на масива по принцип трябва да е strlen(item-1) или 11 както съм написал. Дали е така не съм 100% сигурен. Аз в училище не уча C++, а Logo.

1. Ами ти не минаваш през елементите с указател, ами ги индексираш като масив. И тъй като ти е хардкоднат размера, по-добре щеше да е да ги подаваш като указател към масив... Другият вариант е с указател, както си го направил, но и параметър размер на масива.

2. Не е така. Това не е низ, за да правиш аналогия. За низ, размерът трябва да е +1 заради 0 накрая. Тук имаш N елемента и масива ти трябва да е с размер N.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

Здравейте отново!

Ето ми последното творение. Това ми е за сега най-трудната програма която съм правил някога. :hush:

#include <iostream>
#include <cmath>
using namespace std;
double funkciq(double);
double a, b, c, x, d;
int main()
{
	int s;
	cout<<"MADE BY ToDiR0S!"<<endl<<endl;
	cout<<"Tova e programa, koqto presmqta koreniite na kvadratno uravnenie ot tipa - "<<endl<<"(+/-)ax^2(+/-)bx(+/-)c=0"<<endl<<endl;
	cout<<"Za da produljite izberete - 1, za izhod - 2"<<endl<<endl;
	cin>>s;
	switch(s)
	{
		case 1:
			  cout<<"Vuvedete stoinostite za A, B, C, sus suotvetnite znaci (+/-),"<<endl<<"kakto sledva v primera - (+/-)Ax^2(+/-)Bx(+/-)C=0"<<endl<<endl;
			  cout<<"a=";
			  cin>>a;
			  cout<<"b=";
			  cin>>b;
			  cout<<"c=";
			  cin>>c;
			  funkciq(x);
		case 2:
			break;
	}
return 0;
}
double funkciq(double x)
{
if(a==0)
{
	if(b==0)
	{
		  if(c==0)
		  {
		  cout<<"Vsichki realni chisla sa koreni"<<endl<<endl;  //Rezultat 1
		  }
		  else
		  {  
		  cout<<"Nqma koreni"<<endl<<endl; //Rezultat 2
		  }
	}
	else if (c==0)
	{
	cout<<"Pri "<<b<<"x=0, X = "<<c/b<<endl<<endl; //Rezultat 3
	}
	else
	{
	cout<<"Pri "<<b<<"x"<<c<<"=0, X= "<<c/b<<endl<<endl; //Rezultat 4
	}
}
else if(b==0)
{
	if(c==0)
	{
	cout<<"Pri "<<a<<"x^2=0, X= 0 "<<endl<<endl; //Rezultat 5
	}
	else
	{
	cout<<"Pri "<<a<<"x^2"<<c<<"=0, X= "<<sqrt(c/a)<<endl<<endl; //Rezultat 6
	}	  
}
else if(c==0)
{
	d=b*b;
	if(d<0)
	{
	cout<<"Nqma realni koreni!"<<endl<<endl; //Rezultat 7
	}
	else if(d==0)
	{
	cout<<"D=0, sledovatelno ima samo edin koren!"<<endl<<endl;
	cout<<"Pri "<<a<<"x^2"<<b<<"x=0, X= "<<(-b+sqrt(d))/(2*a)<<endl<<endl;	//Rezultat 7.1
	}  
	else if(d>0)
	{
	cout<<"D>0, sledovatelno ima dva korena, X1 i X2!"<<endl<<endl;
	cout<<"Pri "<<a<<"x^2"<<b<<"x=0, X1= "<<(-b+sqrt(d))/(2*a)<<endl<<endl;   //Rezultat 7.2
	cout<<"Pri "<<a<<"x^2"<<b<<"x=0, X2= "<<(-b-sqrt(d))/(2*a)<<endl<<endl;   //Rezultat 7.3
	}
}	  
else
{
	d=(b*b)-(4*a*c);
	if(d<0)
	{
	cout<<"Nqma realni koreni!"<<endl<<endl; //Rezultat 8
	}
	else if(d==0)
	{
	cout<<"D=0, sledovatelno ima samo edin koren!"<<endl<<endl;
	cout<<"Pri "<<a<<"x^2"<<b<<"x=0, X= "<<(-b+sqrt(d))/(2*a)<<endl<<endl;	//Rezultat 8.1
	}  
	else if(d>0)
	{
	cout<<"D>0, sledovatelno ima dva korena, X1 i X2!"<<endl<<endl;
	cout<<"Pri "<<a<<"x^2"<<b<<"x=0, X1= "<<(-b+sqrt(d))/(2*a)<<endl<<endl;   //Rezultat 8.2
	cout<<"Pri "<<a<<"x^2"<<b<<"x=0, X2= "<<(-b-sqrt(d))/(2*a)<<endl<<endl;   //Rezultat 8.3
	}
}
system ("pause");
return 0;  
}

Доколко успях да проверя, работи добре, но искам и мнение на някой по-опитен.

Основната причина за поста ми е програмата по-която работя в момента:

#include <iostream>
using namespace std;
void restorante(e);
int r, m1, m2, e;
int main()
{
	cout<<"Izberete restorant: "<<endl<<"1 - Bulgarski"<<endl<<"2 - Italianski"<<endl<<"3 - Izhod"<<endl;
	cin>>r;
	switch(r)
	{
		  case 1:
			   cout<<"Izberete menu: "<<endl<<"1 - Menu1"<<endl<<"2 - Menu2"<<endl<<"3 - Izhod"<<endl;
			   cin>>m1;
			   switch(m1)
			   {
					case 1: cout<<"menu1";
					case 2: cout<<"menu2";
					case 3: break;
			   }
		  case 2:
			   cout<<"Izberete menu: "<<endl<<"1 - Menu1"<<endl<<"2 - Menu2"<<endl<<"3 - Izhod"<<endl;
			   cin>>m2;
			   switch(m2)
			   {
					case 1: cout<<"menu1";
					case 2: cout<<"menu2";
					case 3: break;
			   }
		  case 3: break;
	 }
system ("pause");
return 0;
}

Идеята е програмата да предлага избор между два ресторанта, съответно български и италиански, като във всеки от тях да има по две менюта. Там където е menu1 и menu2, съм го сложил само като шаблон в момента, за да не усложнявам кода излишно, в последствие ще добавя истинското меню. Проблемите са два:

1. Така както е в момента програмата работи, но при избора на menu1, от който и да е ресторант, програмата прави някаква грешка и извежда менютата от menu1, и menu2 едновременно. При избора на menu2, грешката я няма, излиза си само второто меню.

2. В условието пише, че програмата трябва да се реализира с вечен цикъл, така че изборът на ресторант и меню да е възможен докато не се избере изход. Чесно казано не съм сигурен, че разбирам какво точно трябва да направя. Предполагам, че ще е нещо с while или for, но няма точна представа как трябва да стане.

Благодаря предварително! :)

Редактирано от ToDiR0S (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

1. Така както е в момента програмата работи, но при избора на menu1, от който и да е ресторант, програмата прави някаква грешка и извежда менютата от menu1, и menu2 едновременно. При избора на menu2, грешката я няма, излиза си само второто меню.

2. В условието пише, че програмата трябва да се реализира с вечен цикъл, така че изборът на ресторант и меню да е възможен докато не се избере изход. Чесно казано не съм сигурен, че разбирам какво точно трябва да направя. Предполагам, че ще е нещо с while или for, но няма точна представа как трябва да стане.

За 1: Трябва след тялото на всеки case да сложиш break както setra е посочил(а). Конструкцията switch/case в C/C++ предава управлението на кода след case, който е равен на посочената променлива, но не спира, където започва следващият case, а продължава, освен ако не срещне break. Това се нарича fall-through(пропадане) и обикновено не се препоръчва употребата му.

За 2. може и с for, може и с while, като логичният избор би бил do{}while(); като в условието слагаш някакъв флаг който сваляш, когато потребителя избере изход. нещо такова:

    int flag = 1;
    do{
        switch(r)
        {
                  case 1:
                      // ...
                      break;
                  case 2:
                      // ...
                      break;
                  case 3: 
                      flag = 0;
                      break;
         }
    }while(flag);
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

За 1: Трябва след тялото на всеки case да сложиш break както setra е посочил(а). Конструкцията switch/case в C/C++ предава управлението на кода след case, който е равен на посочената променлива, но не спира, където започва следващият case, а продължава, освен ако не срещне break. Това се нарича fall-through(пропадане) и обикновено не се препоръчва употребата му.

За 2. може и с for, може и с while, като логичният избор би бил do{}while(); като в условието слагаш някакъв флаг който сваляш, когато потребителя избере изход. нещо такова:

	int flag = 1;
	do{
		switch(r)
		{
				  case 1:
					  // ...
					  break;
				  case 2:
					  // ...
					  break;
				  case 3:
					  flag = 0;
					  break;
		 }
	}while(flag);

Ясно! Благодаря много! :wors:

П.П. При while(flag) не трябва ли да е while(flag==0);?

Също така, ако може да попитам. В главата ми се върти една програма, и се чудя колко точно трудна ще е, понеже не стигнал толкова напред в C++, да знам дали въобще да се занимавам с нея. Става въпрос за програма, която служи за указател/архив за книги, например при стартиране, да имаш възможност за добавяне на име, година, писател, допълнителна информация и т.н. за определена книга, като тази информация да се съхранява на масив, койте да може да се създаде директно от самата програма, и след това информацията да се запамети в него, и при повторно стартиране на програмата, потребителя да има възможност да изведе информацията за тази книга. Естествено трябва да може да се добавят много книги, не само една. Понеже още не сме учили подобни неща, искам да питам, какво точно ще ми трябва за тази програма, като материал?

Редактирано от ToDiR0S (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

П.П. При while(flag) не трябва ли да е while(flag==0);?

Не. while циклите повтарят докато условието им продължава да бъде истина, а не докато стане истина. while(flag) е еквивалентно на while(flag != 0). Може да стане и по другия начин, но тогава трябва да инициализираш отначало flag на 0, а при case 3: да го правиш равен на 1.

Също така, ако може да попитам. В главата ми се върти една програма, и се чудя колко точно трудна ще е, понеже не стигнал толкова напред в C++, да знам дали въобще да се занимавам с нея. Става въпрос за програма, която служи за указател/архив за книги, например при стартиране, да имаш възможност за добавяне на име, година, писател, допълнителна информация и т.н. за определена книга, като тази информация да се съхранява на масив, койте да може да се създаде директно от самата програма, и след това информацията да се запамети в него, и при повторно стартиране на програмата, потребителя да има възможност да изведе информацията за тази книга. Естествено трябва да може да се добавят много книги, не само една. Понеже още не сме учили подобни неща, искам да питам, какво точно ще ми трябва за тази програма, като материал?

Значи в зависимост от подробностите това може да бъде и много просто и доста сложно. Така както си го описал, като минимум ще ти трябва само работа със структури, файлове и динамични масиви. Нещо такова:
  • дефинраш си структура "Книга", която съдържа полета с информацията за книгата
  • Програмата при стартиране проверява за наличие на файл с определено име в което си съхраняваш информацията с книгите - ако го има, го зарежда в динамичен масив от "Книга".
  • Цикъл с case като по-горе за действията с книгите.
  • При изход и/или заявка от потребителя (и/или когато решиш) - запазваш промените във файла
По-добрият вариант би бил да си направиш клас и да използваш контейнер от стандартната библиотека STL, ама знам, че това много не се учи в училище или се засяга твърде късно в учебния материал... Но пък не е сложно и ако се позачетеш ще ти е полезно. Редактирано от flare (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

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

Ето условието: Програмата да съдържа информация за 6 отбора с по 3 участника в състезание по програмиране. От клавиатурата се въвеждат получените точки (0-100 / мисля после да въведе и if, който да проверява дали въведеното число е в границата от 0 до 100) от всеки участник. Формира се общия брой точки за отбора, като сума от точките на участниците. Програмата да извежда по избор от меню данните за участник-отбор, точки и общото класиране на отборите подредени в низходящ ред.

Ето и кода:

#include <iostream>
using namespace std;

int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18;
int x, y, z, f, c;
int sustezanie(int f);
int main()
{
	cout<<"MADE BY ToDiR0S"<<endl<<endl;
	cout<<"Tova e programa koqto sumira, razpredelq i izvejda tochkite na uchastnicite i tehnite otbori, v sustezaniie po programirane!"<<endl<<endl; //???????? ?? ??????????.
	cout<<"Za da produjite izberete - 1, za izhod - 2!"<<endl;
	cin>>x;
	cout<<endl<<endl;
	switch(x)
	{
		case 1:
			sustezanie(f);
			break;
		case 2:
			exit(0);
			break;
	}
	system("pause");
	return 0;
}

int sustezanie(int f)
{
	int flag=1;
	cout<<"Za da vuvedete tochkite (0 - 100) za vseki igrach izberete - 1, za izhod 2!"<<endl;
	cin>>y;
	cout<<endl<<endl;
	switch(y)
	{
		case 1:
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 1 - ";
			cin>>n1;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 2 - ";
			cin>>n2;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 3 - ";
			cin>>n3;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 4 - ";
			cin>>n4;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 5 - ";
			cin>>n5;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 6 - ";
			cin>>n6;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 7 - ";
			cin>>n7;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 8 - ";
			cin>>n8;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 9 - ";
			cin>>n9;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 10 - ";
			cin>>n10;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 11 - ";
			cin>>n11;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 12 - ";
			cin>>n12;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 13 - ";
			cin>>n13;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 14 - ";
			cin>>n14;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 15 - ";
			cin>>n15;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 16 - ";
			cin>>n16;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 17 - ";
			cin>>n17;
			cout<<"Vuvedete poluchenite tochki ot testa na uchstnik nomer 18 - ";
			cin>>n18;
			cout<<endl<<endl;
			break;
		case 2:
			exit(0);
			break;
	}
	do
	{
	cout<<"Za da vidite klasiraneto do momenta izberete - 1, a za obshtoto klasirane izberete - 2, za izhod - 3!"<<endl;
	cin>>z;
	cout<<endl<<endl;
	switch(z)
	{
		case 1:
			cout<<"Klasirane:"<<endl<<endl;
			cout<<"Uchastnik nomer 1 - "<<n1<<endl;
			cout<<"Uchastnik nomer 2 - "<<n2<<endl;
			cout<<"Uchastnik nomer 3 - "<<n3<<endl;
			cout<<"Uchastnik nomer 4 - "<<n4<<endl;
			cout<<"Uchastnik nomer 5 - "<<n5<<endl;
			cout<<"Uchastnik nomer 6 - "<<n6<<endl;
			cout<<"Uchastnik nomer 7 - "<<n7<<endl;
			cout<<"Uchastnik nomer 8 - "<<n8<<endl;
			cout<<"Uchastnik nomer 9 - "<<n9<<endl;
			cout<<"Uchastnik nomer 10 - "<<n10<<endl;
			cout<<"Uchastnik nomer 11 - "<<n11<<endl;
			cout<<"Uchastnik nomer 12 - "<<n12<<endl;
			cout<<"Uchastnik nomer 13 - "<<n13<<endl;
			cout<<"Uchastnik nomer 14 - "<<n14<<endl;
			cout<<"Uchastnik nomer 15 - "<<n15<<endl;
			cout<<"Uchastnik nomer 16 - "<<n16<<endl;
			cout<<"Uchastnik nomer 17 - "<<n17<<endl;
			cout<<"Uchastnik nomer 18 - "<<n18<<endl<<endl;
			break;
		case 2:
			cout<<"Obshto klasirane:"<<endl<<endl;
			cout<<"Otbor nomer 1 - "<<n1+n2+n3<<endl;
			cout<<"Otbor nomer 2 - "<<n4+n5+n6<<endl;
			cout<<"Otbor nomer 3 - "<<n7+n8+n9<<endl;
			cout<<"Otbor nomer 4 - "<<n10+n11+n12<<endl;
			cout<<"Otbor nomer 5 - "<<n13+n14+n15<<endl;
			cout<<"Otbor nomer 6 - "<<n16+n17+n18<<endl<<endl;
			break;
		case 3:
			flag=0;
			break;
	}
	}
	while(flag);
}

Проблемите са няколко:

1. Както споменах, програмата ми се струва прекалено лесна за класно, и мисля, че има и по-добър начин по който може да се направи. Мислех си, дали е възможно, да направя участниците като параметри-масиви в символни низове(отборите). Нещо подобно:

int otbor1={uchastnik1[a], uchastnik2[b], uchastnik3[c], d};

Като a е за точките на участник1, b за точките на участник2, c за участник3, а d е за точките на отбора (сбор от точките на участниците).

Дали е възможен този начин, и ако да, дали е практичен, и въобще има ли смисъл да го правя по този начин?

2. Какво точно мога да използва за да ги подреда в низходящ ред?

Благодаря предварително! :worse:

Редактирано от ToDiR0S (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

но се предполага, че трябва да е нещо сложно, (понеже ми се води като класно), но не е.

И аз така мисля. :)

Мисля си, че не я правя както трябва, и затова ще я постна тука, за да я разгледате.

1. Както споменах, програмата ми се струва прекалено лесна за класно, и мисля, че има и по-добър начин по който може да се направи. Мислех си, дали е възможно, да направя участниците като параметри-масиви в символни низове(отборите). Нещо подобно:

Ти се шегуваш! Как така ще използваш масиви? Ако участниците бяха 1000, просто си пишеш хиляда последователни променливи и яко копи/пейст после, за редовете за въвеждане/извеждане и всички сметки. :no-no:

А сега сериозно - не бях виждал такова нещо, откакто в гимназията един съученик беше опитал да направи програма за играта морски шах и беше направил 18 функции, за да чертане на Х или 0 в съответно квадратче :shock11:.

Естествено, че трябва данните да са в масиви. (Някак си си мисля, че не сте учили вектори или списъци) По-добре един двумерен масив - всеки ред дълъг, колкото участниците в един отбор и толкова редове колкото са отборите. Така лесно ще може да променяш броя на играчите и отборите. После въвеждането на данните трябва да го направиш в цикъл, за да не пишеш кода за въвеждане и извеждане толкова много пъти. После може ли да ми кажеш какъв е смисълът от функцията която си написал и особено много от параметъра и f??? Който всъщност е неинициализиран...

Функции се правят за да отделиш логически част от програмата, което изпълнява самостоятелна задача и вероятно ще се ползва често.

Твоята функция можеше да я разделиш на няколко - въвеждане на данните, обработка, извеждане... На всяка може да подаваш като параметри масива с отборите и участниците, и техният брой.

2. Какво точно мога да използва за да ги подреда в низходящ ред?

Сортиране. Редактирано от flare (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Щом е спешно, бързо се опитай да направиш нещо, за да може да ти помогнем с каквото те затрудни...

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

И аз така мисля. :)

Ти се шегуваш! Как така ще използваш масиви? Ако участниците бяха 1000, просто си пишеш хиляда последователни променливи и яко копи/пейст после, за редовете за въвеждане/извеждане и всички сметки. :no-no:

А сега сериозно - не бях виждал такова нещо, откакто в гимназията един съученик беше опитал да направи програма за играта морски шах и беше направил 18 функции, за да чертане на Х или 0 в съответно квадратче :shock11:.

Естествено, че трябва данните да са в масиви. (Някак си си мисля, че не сте учили вектори или списъци) По-добре един двумерен масив - всеки ред дълъг, колкото участниците в един отбор и толкова редове колкото са отборите. Така лесно ще може да променяш броя на играчите и отборите. После въвеждането на данните трябва да го направиш в цикъл, за да не пишеш кода за въвеждане и извеждане толкова много пъти. После може ли да ми кажеш какъв е смисълът от функцията която си написал и особено много от параметъра и f??? Който всъщност е неинициализиран...

Функции се правят за да отделиш логически част от програмата, което изпълнява самостоятелна задача и вероятно ще се ползва често.

Твоята функция можеше да я разделиш на няколко - въвеждане на данните, обработка, извеждане... На всяка може да подаваш като параметри масива с отборите и участниците, и техният брой.

Огромни благодарности! :wors:

Ето го и резултата, имам няколко пропуски, но след една седмици ще ги оправя.

#include <iostream>
using namespace std;
int sustezanie[6][3];
int v(int x);
int i(int z);

int main()
{
int flag=1;
cout<<"MADE BY ToDiR0S!"<<endl<<endl;
cout<<"Tova e programa koqto vuvejda, sled tova sumira i izvejda tochki na uchastnici, izkarani na sustezanie po programirane"<<endl<<endl;
cout<<"Za da produljish izberi - 1, za izhod - 2"<<endl<<endl;
cin>>x;
cout<<endl;
switch(x)
{
	 case 1:
		 do
		 {
		 cout<<"Vuvejdane na rezultatite - 1"<<endl;
		 cout<<"Izvejdane na klasiraneto - 2"<<endl;
		 cout<<"Izhod - 3"<<endl<<endl;
		 cin>>z;
		 cout<<endl;
		 switch(z)
		 {
			 case 1:
				 v(x);
				 break;
			 case 2:
				 i(z);
				 break;
			 case 3:
				 flag=0;
				 break;
		 }
		 }
		 while(flag);
		 break;
	 case 2:
		 exit(1);
		 break;
}
system("pause");
return 0;
}

int v(int x)
{
int rows, cols;
cout<<"Vuvedete poluchenite tochki (0-100) za vseki uchastnik: "<<endl<<endl;
for(int rows=0; rows<6; rows++)
{
	 for(int cols=0; cols<3; cols++)
	 {
		 cout<<"Uchastnik nomer "<<cols<<" ot otbor "<<rows<<" = ";
		 cin>>sustezanie[rows][cols];
	 }
}

}

int i(int z)
{
int rows, cols;
cout<<"Izberete: "<<endl;
cout<<"Uchastnici	 - 1"<<endl;
cout<<"Obshto Klasirane - 2"<<endl;
cout<<"Izhod		 - 3"<<endl<<endl;
cin>>y;
cout<<endl;
switch(y)
{
	 case 1:
		 for(int rows=0; rows<6; rows++)
		 {
			 for(int cols=0; cols<3; cols++)
			 {
				 cout<<"Uchastnik nomer "<<cols<<" ot otbor "<<rows<<" = ";
				 cout<<sustezanie[rows][cols]<<endl<<endl;
			 }
		 }
		 break;
	 case 2:
		 cout<<"Otbor 0 - "<<sustezanie[0][0]+sustezanie[0][1]+sustezanie[0][2]<<endl;
		 cout<<"Otbor 1 - "<<sustezanie[1][0]+sustezanie[1][1]+sustezanie[1][2]<<endl;
		 cout<<"Otbor 2 - "<<sustezanie[2][0]+sustezanie[2][1]+sustezanie[2][2]<<endl;
		 cout<<"Otbor 3 - "<<sustezanie[3][0]+sustezanie[3][1]+sustezanie[3][2]<<endl;
		 cout<<"Otbor 4 - "<<sustezanie[4][0]+sustezanie[4][1]+sustezanie[4][2]<<endl;
		 cout<<"Otbor 5 - "<<sustezanie[5][0]+sustezanie[5][1]+sustezanie[5][2]<<endl<<endl;
		 break;
	 case 3:
		 exit(1);
		 break;
}
}

Както забелязваш, не съм ги сортирал, също така, извеждането на общото класиране, съм го направил по каруцарския начин. Сортирането въобще не ми се получава с двумерен масив, по-късно разбрах, че мога да комбинирам елементите на двумерния масив, и да направя един едномерен, с 18 елемента, и след това да го сортирам? Извеждането на общото класиране, не разбрах защо не се получи, може би защото бях прекалено уморен и правех стращно много грешки (не бях спал над 35 часа) или просто защото не го правех правилно, и затова накрая го направих по "каруцарския" начин. Иначе функции слагам, за да покажа знание, не за друго, все пак става въпрос за класно, на което ще ни оформят, и трябва да покажем всичко което сме взели до този момент, затова сложих функцията. Това по-скоро е учебна програма в която се набляга по-скоро на самия код, и начин по който е направена, затова трябва да се вмъкне всичко което сме учили до този момент, а не толкова за изпълнението и темата на програмата. За параметрите, честно казано не знам въобще за какво служат, понеже функцията си извежда на екрана информацията, параметъра й е безполезен(поне в този случай), и най-честно слагам някаква променлива, която няма никаква връзка с програмата. Пробвах да сложа масива като параметър, но ми даде куп грешки, които не бях в състояние да оправя, затова го направих по-този начин.

Редактирано от ToDiR0S (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ето го и резултата, имам няколко пропуски, но след една седмици ще ги оправя.

....

1. Не си декларирал променливите:

x, z, y
и функциите:
exit(), system()
2. Всяка променлива трябва да се инициализира! Не си инициализирал:
rows и cols

Това:

cout<<"Otbor 0 - "<<sustezanie[0][0]+sustezanie[0][1]+sustezanie[0][2]<<endl;
cout<<"Otbor 1 - "<<sustezanie[1][0]+sustezanie[1][1]+sustezanie[1][2]<<endl;
cout<<"Otbor 2 - "<<sustezanie[2][0]+sustezanie[2][1]+sustezanie[2][2]<<endl;
cout<<"Otbor 3 - "<<sustezanie[3][0]+sustezanie[3][1]+sustezanie[3][2]<<endl;
cout<<"Otbor 4 - "<<sustezanie[4][0]+sustezanie[4][1]+sustezanie[4][2]<<endl;
cout<<"Otbor 5 - "<<sustezanie[5][0]+sustezanie[5][1]+sustezanie[5][2]<<endl<<endl;
трябва да се напише по този начин:

for(int j=0; j<6; ++j)
cout << "Otbor " << j << " - " << sustezanie[j][0]+sustezanie[j][1]+sustezanie[j][2]<<endl;
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

1. Не си декларирал променливите:

x, z, y
...
При изтриване на коментарите съм изтрил и реда с декларацията без да искам... :lol6:

....и функциите:

exit(), system()

За първи път чувам, че трябва да се декларират!? :ohmy:

2. Всяка променлива трябва да се инициализира! Не си инициализирал:

rows и cols

Направо тук са инициализирани...

for(int rows=0; rows<6; rows++)
		 {
			 for(int cols=0; cols<3; cols++)
			 {

Това:

cout<<"Otbor 0 - "<<sustezanie[0][0]+sustezanie[0][1]+sustezanie[0][2]<<endl;
cout<<"Otbor 1 - "<<sustezanie[1][0]+sustezanie[1][1]+sustezanie[1][2]<<endl;
cout<<"Otbor 2 - "<<sustezanie[2][0]+sustezanie[2][1]+sustezanie[2][2]<<endl;
cout<<"Otbor 3 - "<<sustezanie[3][0]+sustezanie[3][1]+sustezanie[3][2]<<endl;
cout<<"Otbor 4 - "<<sustezanie[4][0]+sustezanie[4][1]+sustezanie[4][2]<<endl;
cout<<"Otbor 5 - "<<sustezanie[5][0]+sustezanie[5][1]+sustezanie[5][2]<<endl<<endl;
трябва да се напише по този начин:

for(int j=0; j<6; ++j)
cout << "Otbor " << j << " - " << sustezanie[j][0]+sustezanie[j][1]+sustezanie[j][2]<<endl;

Хитро, аз се опитах да го разгадая как може да стане, но така и не успях...

Мерси много, ще се пробва... :wors:

Редактирано от ToDiR0S (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
публикувано (редактирано)

exit(), system()

Преди да ги използваш тези функции, трябва да включиш библиотеката: <cstdlib>

#include <cstdlib>
Редактирано от zerocool2 (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Преди да ги използваш тези функции, трябва да включиш библиотеката: <cstdlib>

#include <cstdlib>

Добре, тогава защо при компилиране не отчeтe грешка, и програмата си работи нормално и без <cstdlib>?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.