C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Е мојов е побрз. Помалку операции, (x се пресметува еднаш и се сместува во променлива)

Код:
double visinaKvadrat(int a, int b, int c)
{
   int razlika;
   double hKv, x;
   razlika = a>b? (a-b) : (b-a);
   x = (double)razlika/2.0;
   hKv = (double)(c*c) - x*x;
   return hKv;
}

int main()
{
   int a,b,c;
   double hKv;
   scanf("%d %d %d", &a, &b, &c);
   hKv = visinaKvadrat(a, b, c);
   printf("%lf\n", hKv);
   return 0;
}

Еве го и со цртеш :pos:
 
Ќе ти пратам по ПП туторијали на македонски денес или утре (се надевам не се брзаш :)).[/QUOTE]
Не не уживај кога можеш тогај и стварно ногу работа ке ми завршеш.:smir:
 
Фала за помошта околу програмава со трапезот. Ама пошто за лабораторска уствари тоа ни е втора задача, ај да ве помачам малце и со првата :smir:.

#include <stdio.h>
int main()
{
char c; int i,j,k;
float x;
c='A';
i=123;j=4;k=10;
x=9.868;
printf("%-5d%05d\n%c %0*.*f\n",i,i,c,k,j,x);
j=scanf("%3d\"%c%*2c\"%f",&i,&c,&x);
printf("%0*d %c %0*.*f\n",j,i,c,2*j,j,x);

return(0);
}

Ја у ова не се снаоѓам... Ако може некој да ми објасни што значат болдираниве линии ќе му бидам многу благодарен :back:

PS: во задачата пишува да се "претпостави" што ќе се добие на излез, ако се внесе следново:
1. 098"abc"987.076
2. 0097"abc"678.098
3. 876"ob"890.345
4. 567"ijkl234.567
5. 567"rty" 098.09
 
Здраво,едно прашање до поискусните програмери.

Имам основно знаење на c ++,низи,стандардната библиотека,функции/методи,покажувачи,работа со динамичка меморија,основните концепти на објектно ориентираното програмирање,наследство полиморфизам итн.

Прашањето е - сакам да си го унапредам знаењето,ама незнам како и кај и со шо да почнам.
На пример,ако почнам да го користам јазикот за пишење на драјвери,оперативни системи или некои сложени игри :toe:
 
Се надевам ќе се најде некој што ќе ми ги реши задачиве во C :smir:

Да се напише програма која ќе ги отпечати сите прости броеви од даден опсег (почетокот и крајот на опсегот се внесуваат од тастатура) чија сума на цифри е непарен број, а производот на цифрите е парен број. На крајот да се испечати колку вакви броеви имало во опсегот.
За еден број велиме дека е прост доколку има точно два (различни) делители (тоа се 1 и самиот тој број). Првите неколку прости броеви се: 2, 3, 5, 7, 11, 13, 17, 19…

Од тастатура се читаат N цели броеви (N се внесува на почетокот на програмата, исто така од тастатура). Програмата треба да испечати дали низата составена од овие N елементи е строго монотоно растечка или не (т.е., дали секој елемент, почнувајќи од вториот, е стриктно поголем од неговиот претходник).
 
Здраво,едно прашање до поискусните програмери.

Имам основно знаење на c ++,низи,стандардната библиотека,функции/методи,покажувачи,работа со динамичка меморија,основните концепти на објектно ориентираното програмирање,наследство полиморфизам итн.

Прашањето е - сакам да си го унапредам знаењето,ама незнам како и кај и со шо да почнам.
На пример,ако почнам да го користам јазикот за пишење на драјвери,оперативни системи или некои сложени игри :toe:

Најдобро е да се вежба на задачи. Имаш на http://www.z-trening.com , на http://codefu.com.mk
Од нив најдобро се учат алгоритми и податочни структури. Значи прво некој алгоритам се учи теоретски и после преку задачи се применува. За ОО дизајн најдобро е да си почнеш некој свој проект, и во него да експериментираш.

Се надевам ќе се најде некој што ќе ми ги реши задачиве во C :smir:

Да се напише програма која ќе ги отпечати сите прости броеви од даден опсег (почетокот и крајот на опсегот се внесуваат од тастатура) чија сума на цифри е непарен број, а производот на цифрите е парен број. На крајот да се испечати колку вакви броеви имало во опсегот.
За еден број велиме дека е прост доколку има точно два (различни) делители (тоа се 1 и самиот тој број). Првите неколку прости броеви се: 2, 3, 5, 7, 11, 13, 17, 19…

Од тастатура се читаат N цели броеви (N се внесува на почетокот на програмата, исто така од тастатура). Програмата треба да испечати дали низата составена од овие N елементи е строго монотоно растечка или не (т.е., дали секој елемент, почнувајќи од вториот, е стриктно поголем од неговиот претходник).

Види овде. Има едно 10ина алгорими за наоѓање на прости броеви. Од наједноставниот па се потешки (но и побрзи)
 
Види овде. Има едно 10ина алгорими за наоѓање на прости броеви. Од наједноставниот па се потешки (но и побрзи)
Баш и не ми треба некоја што ќе ми ги најде првите 100 милиони за 13 секунди, don't you think? :nesum:
Ако може некоја наједноставна програма, please? Мислам дека ова и нема да ми користи на испит туку некоја што ќе ми ги најде да речеме до 100 без никакви експертски кодови.
 
Баш и не ми треба некоја што ќе ми ги најде првите 100 милиони за 13 секунди, don't you think? :nesum:
Ако може некоја наједноставна програма, please? Мислам дека ова и нема да ми користи на испит туку некоја што ќе ми ги најде да речеме до 100 без никакви експертски кодови.

Moжеше да го извадиш алгоритмот за дали е прост од првиот пример таму. Односно првиот пример е цел програм (со наједноставниот алгоритам) кој ги бара простите броеви од 1 до даден број. Туку еве јас ќе ти напишам поедноставно, таму користат линкирана листа за да ги запамтат најдените броеви, а не обчина листа (array). Во примеров подолу немам никаква листа, веднаш се печати бројот ако е прост.

Код:
#include <stdio.h>

int daliEProst(int n)
{
	int mnozitel = 2;
	int prost = 1;
	if (n==1)
		return 0; //1 ne e ni slozen ni prost
	while (mnozitel*mnozitel <= n)
	{
		if (n%mnozitel == 0)
		{
			prost = 0; break;
		}
		mnozitel++;
	}
	return prost;
}

int main()
{
	int dolnaGranica = 1, gornaGranica = 100, i;
	for (i=dolnaGranica; i<=gornaGranica; i++)
	{
		if (daliEProst(i))
		{
			printf("%d ", i);
		}
	}
}
 
Баш и не ми треба некоја што ќе ми ги најде првите 100 милиони за 13 секунди, don't you think? :nesum:
Ако може некоја наједноставна програма, please? Мислам дека ова и нема да ми користи на испит туку некоја што ќе ми ги најде да речеме до 100 без никакви експертски кодови.

Прва година на електро ? :)

Иначе еве ти код за простите броеви без користење функции и такви работи...

Код:
#include <iostream>

using namespace std;

int main()
{
	int start = 0, end = 0;

	cout << "Vnesete go pochetokot: ";
	cin >> start;
	
	cout << "Vnesete go krajot: ";
	cin >> end;

	int a = 0;

	for(int i=start; i<=end; i++) {
		if(i%2!=0) {
			for(int j=3; j<=i/2; j++) {
				if(i%j==0) {
					a++;
				}
			}
			if(a>0) {
				a=0;
			} else {
				cout << i << " ";
			}
		}
	}

	cout << endl;

	cin.get();
           cin.get();
}

А тоа за низата дали е или не е растечка...

Код:
#include <iostream>

using namespace std;

int main()
{
	int N = 0;

           cout << "Vnesete kolku elementi da ima nizata: ";
           cin >> N;

	int niza[N];
           
           for(int i=0; i<N; i++) {
                 cout << "Vnesete go elementot " << i << ": ";
                 cin >> niza[i];
           }

	bool ok = true;

	for(int i=1; i<N; i++) {
		if(niza[i]<niza[i-1]) {
			ok = false;
		}
	}

	if(ok == true) {
		cout << "Nizata e rastechka\n";
	} else {
		cout << "Nizata ne e rastechka\n";
	}

	cin.get();
	cin.get();
}

Ете ги решенијата со користење на едноставен код. :)
 
Mи треба помош..Иам една игра..Сеа оваа игра бара излеа Microsoft Visual C++ 2005 Redistributable. Се беше ок додека не инсталирав Microsoft Visual C++ 2008 Redistributable. Кога ја палам играта сеа, ми покажува некој ерор поврзан со ова. Ги избришав сите С++, и инсталирав Microsoft Visual C++ 2005 Redistributable од поново, и играта пак нејке да се упали, го дава истиот ерор? Помош?
 
Aj prasanje do SkyDriver, dali moze taa vtorata da se resi malce poinaku bez koristenje na nizi, da receme samo so ciklusite do,for, while???? Kako poinaku da gi vnesam clenovite na nizata, bez toa niza?
p.s. brgu mi zatreba pomosta, neli...:pipi:
 
Aj prasanje do SkyDriver, dali moze taa vtorata da se resi malce poinaku bez koristenje na nizi, da receme samo so ciklusite do,for, while???? Kako poinaku da gi vnesam clenovite na nizata, bez toa niza?
p.s. brgu mi zatreba pomosta, neli...:pipi:


Хмм... не си ми јасна баш... како поинаку да ги внесеш членовите на низата, без користење на низа ? :nesum:

...da receme samo so ciklusite do,for, while???? Kako poinaku da gi vnesam clenovite na nizata, bez toa niza?


Тоа „i“ ти е покажувач кон низата, значи правиш for циклус кој ќе започне од 0 (индексот на секоја низа) и ќе се повторува се додека е помал од должината на низата (во случајот со задачата должината на низата е вредноста на променливата „N“). Значи for циклусот би изгледал вака for(int i=0; i<N; i++)...

И сега, и со секое наредно повторување „i“ се зголемува за еден, што значи дека...

Прво повторување:
i=0;
cin >> niza; // значи тука внесуваш вредност за niza[0]

Второ повторување:
i=1; // „i“ се зголемило за 1
cin >> niza; // со второто повторување внесуваш вредност за niza[1]

Трето повторување:
i=2; // „i“ се зголемило за 1
cin >> niza; // со третото повторување внесуваш вредност за niza[2]

...и се така додека i<N.

Значи ова ти е полнење низа со for циклус и мора да биде со niza (т.е. со „i“ покажувачот) затоа што незнаеш колкава ќе биде нејзината должина.

Е сега незнам дали ова што го објаснив е тоа што ти требаше... Ако си барала нешто друго или пак ако не ти е јасно нешто од ова што го објаснував, слободно прашај и ќе ја наредиме работата :)
 
Хмм... не си ми јасна баш... како поинаку да ги внесеш членовите на низата, без користење на низа ? :nesum:



Тоа „i“ ти е покажувач кон низата, значи правиш for циклус кој ќе започне од 0 (индексот на секоја низа) и ќе се повторува се додека е помал од должината на низата (во случајот со задачата должината на низата е вредноста на променливата „N“). Значи for циклусот би изгледал вака for(int i=0; i<N; i++)...

И сега, и со секое наредно повторување „i“ се зголемува за еден, што значи дека...

Прво повторување:
i=0;
cin >> niza; // значи тука внесуваш вредност за niza[0]

Второ повторување:
i=1; // „i“ се зголемило за 1
cin >> niza; // со второто повторување внесуваш вредност за niza[1]

Трето повторување:
i=2; // „i“ се зголемило за 1
cin >> niza; // со третото повторување внесуваш вредност за niza[2]

...и се така додека i<N.

Значи ова ти е полнење низа со for циклус и мора да биде со niza (т.е. со „i“ покажувачот) затоа што незнаеш колкава ќе биде нејзината должина.

Е сега незнам дали ова што го објаснив е тоа што ти требаше... Ако си барала нешто друго или пак ако не ти е јасно нешто од ова што го објаснував, слободно прашај и ќе ја наредиме работата :)



И мене ми треба ова.. Значи друже без тоа cin,cout itn само да содржи for,while,if. Ајде ако може да помогнете ми треба за утре сабајле.Поздрав
 
Од тастатура се читаат N цели броеви (N се внесува на почетокот на програмата, исто така од тастатура). Програмата треба да испечати дали низата составена од овие N елементи е строго монотоно растечка или не (т.е., дали секој елемент, почнувајќи од вториот, е стриктно поголем од неговиот претходник).

И мене ми треба ова.. Значи друже без тоа cin,cout itn само да содржи for,while,if. Ајде ако може да помогнете ми треба за утре сабајле.Поздрав

Еве ја задачата решена без низи.

Код:
#include <stdio.h>

int main()
{
	int N, a1, a2, i, daliRasti = 1;
	scanf("%d", &N);
	if (N==0)
		return 0;
	scanf("%d", &a1); //читаме прв елемент
	for (i=1; i<N; i++) //i=1, а не нула значи почнуваме од втор
	{
		scanf("%d", &a2);
		if (daliRasti && a2<a1) //овде можеби треба да стои <=. Ако е само < тогаш ќе се смета дека расти и ако има еднакви соседни членови, пр: 1 2 2 3
		{
			daliRasti = 0;
		}
		a1 = a2;
	}
	if (daliRasti)
		printf("Nizata monotono rasti\n");
	else
		printf("Nizata ne rasti monotono\n");

	return 0;
}
 

Kajgana Shop

Back
На врв Bottom