C++ zadaci,resenja,pitanja,tutoriali

Такође ми изгледа да оне провере да ли треба continue или break могу такође да се извуку ван подслучајева.

Тја, хеш би био дивна ствар. Али пошто су бројеви овако лепо распоређени, може и низ (као подслучај хеша). Нпр. ова (испод) ф-ја даје оцену на основу броја поена. Претпоставља да је улаз већ проверен за опсег 0-100.

Kod:
int ocena(int poeni)
{
	static char nizocena[] = {1,1,1,1,1,1,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5};
	return nizocena[poeni / 5];
}

Jap, takodje jedan od nacina...:)
 
Такође је у класи са if-else if решењем (O(1)), али ми вуче да је варијанта са извлачењем оцене са неке меморијске локације (уз једноставну бројевну трансформацију) ефикаснији приступ.

Nemoj meni o memorijskim lokacijama, ja sam ti C# 'dete', navikao na servirano. :lol:
Šalim se, naravno da jeste. :)
 
Nije mi jasno, zasto nije napravljena jedna lepljiva tema koja se zove

Programiranje zadaci, resenja, pitanja gde bi za svaki jezik mogli da se raspravljamo, ovako imamo lepljivu za Pascal, ovu 'obicnu' za C++, sta cemo sa C#, Java, Php, Asembler, C, Fortran, Matlab itd itd
Ја се придружујем иницијативи да добијемо једну тему за све задатке (без обзира на програмски језик), па ако неко жели специфичан језик може то да нагласи. То га, наравно, неће спас`ти од добијања решења и на другом програмском језику уколико проблем није језички специфичан.
 
Nemam na laptopu nikakav C++ editor, ali evo napamet, to je nesto ovako:
Kod:
[COLOR="#FF0000"]int[/COLOR] broj1,broj2;
[COLOR="#00FFFF"]printf[/COLOR]("Unesi prvi broj: ");
[COLOR="#00FFFF"]scanf[/COLOR]("%i",broj1);
[COLOR="#00FFFF"]printf[/COLOR]("Unesi drugi broj: ");
[COLOR="#00FFFF"]scanf[/COLOR]("%i",broj2);
[COLOR="#00FFFF"]while[/COLOR](broj1<broj2)
{
    broj1++;
    [COLOR="#00FFFF"]printf[/COLOR](broj1.ToString());
}

ne zamerite na sitnicama, verovatno ima nekih gresaka oko %, pozaboravljao sam to, kad se zezam samo sa ASPom
 
А шта ако је други мањи од првог?

Овако би изгледала логика:
Kod:
void printNumbers(int start, int end, ostream& o)
{
	if(start > end)
	{
		printNumbers(end, start, o);
		return;
	}
	for(int i=start; i<= end; i++)
	{ o << i << endl; }
}

А може и прљавије:
Kod:
void printNumbers(int start, int end)
{
	if(start > end)
	{
		printNumbers(end, start);
		return;
	}
	while(start <= end)
	{ cout << (start++) << endl; }
}
 
Pozdrav.
Je l moze mala pomoc oko resenja ovog zadatka?

Na programskom jeziku C++ kreirati klasu Skladiste koja od privatnih atributa sadrži maksimalni kapacitet u kg (double), broj elemenata niza i niz pointera na objekte klase Element. Klasa sadrži i sledeće javne funkcije:
• konstruktor koji postavlja maksimalni kapacitet, broj elemenata niza i zauzima potreban prostor u memoriji
• destruktor
• funkciju za dodavanje jednog elementa u niz ako time ukupna količina materijala ne prevazilazi maksimalnu vrednost
• funkciju za određivanje ukupne količine materijala u skladištu
• funkciju koja štampa listu šifara svih materijala koji su uskladišteni (svaku šifru štampati po jednom)
• prijateljsku operatorsku funkciju << za štampanje liste elemenata u skladištu uredjenu u rastući niz po šifri materijala.

Kreirati klasu Element koja od zaštićenih atributa sadrži šifru (int), šifru materijala (int) i količinu (float), a od javnih funkcija:
• funkciju koja vraća šifru materijala,
• funkciju koja vraća količinu materijala
• čistu virtuelnu funkciju za štampanje podataka o elementu
• operatorsku funkciju za upoređivanje dva elementa (po šifri)

Kreirati klasu Paleta koja je javno izvedena iz klase Element,koja od privatnih atributa sadrži lot kod (niz karaktera) i tip („pck“ za paket, „silo“ za silos). Od javnih metoda sadrži:
• konstruktor koji postavlja sve atribute
• operator >> za unos podataka o paleti

U funkciji main napraviti skladište, napraviti nekoliko paketa i silosa i dodati ih skladištu. Zatim odrediti ukupnu količinu materijala u skladištu, odštampati listu šifara svih materijala koji se javljaju u skladištu i odštampati listu svih paketa i silosa.
 
Jel bi imao neko ideju kako da uradi ovaj zadatak ? Vezbam zadatke ali kod ovog je bas zapelo.

Дата је целобројна матрица А[nxn]. Одредити и исписати колико има
елемената изнад споредне дијагонале (укључујући и споредну) који су парни и
дељиви са 7. Од матрице А формирати матрицу М која име исте вредности на
главној дијагонали као матрица А, а сви остали елементи су једнаки 0. Исписати
на стандардном излазу добијену матрицу М.
 
Како би било, момци, да ви пробате сами нешто да почнете да решавате, па да то поставите?

Мислим да је то добра пракса, јер ако вам неко све уради, ви не стичете никакво искуство.
 
Како би било, момци, да ви пробате сами нешто да почнете да решавате, па да то поставите?

Мислим да је то добра пракса, јер ако вам неко све уради, ви не стичете никакво искуство.

Slazem se. Ne verujem da neko cak nema ni ideju da resi zadatak. Makar neka pokusa i izbaci kod.
 
Мени би рецимо било прихватљиво и ако би постављач питања написао све остало осим кључних проблема. Нпр.:

Kod:
// ...

int solve(const Problem&, Result&);

int main()
{
  // ...
  // Whole I/O part already written, just call solve
  // ...

  return 0;
}

Или, на пример поставио питање:

1) Како да напишем свој оператор у некој класи?
2) Како уопште да направим матрицу у C++?
3) ...

Иако све то може да пита и гугл...
 
Ma uradite ljudima, 90% njih objavljuje da bi resili to za skolu, retko ko se bavi programiranjem...
Ja C++ vrlo slabo poznajem, krenuo sam jedno vreme, ali batalio zbog posla, inace bi pomogao.
Баш из разлога што им треба за школу или (још важније) за факултет се залажем да ништа не добију на тацни. Оно што се тражи у ова два задатка и није нека наука. Ако су се уписали по програму који садржи те ствари, ред је да бар толико науче. А овде чак имају и помоћ. :)

А и не тражим пуно. Горанче рече да му је запело. Ваљда већ има неки програмски код написан.
 
Jel bi imao neko ideju kako da uradi ovaj zadatak ? Vezbam zadatke ali kod ovog je bas zapelo.

Дата је целобројна матрица А[nxn]. Одредити и исписати колико има
елемената изнад споредне дијагонале (укључујући и споредну) који су парни и
дељиви са 7. Од матрице А формирати матрицу М која име исте вредности на
главној дијагонали као матрица А, а сви остали елементи су једнаки 0. Исписати
на стандардном излазу добијену матрицу М.

Ako je BAŠ zapelo...

Kod:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main(int argc, char const *argv[])
{
	cout << "dimenzije: "; int n; cin >> n;
	
	int matrix[100][100]; //ovo mozes da postavis i na vecu vrednost

	srand((unsigned)time(0));

	for(int i=0; i<n; i++)
		for(int j=0; j<n; j++)
			matrix[i][j] = (rand() / ((double)RAND_MAX+1.0)) * (100-10) + 10;


	for(int i=0; i<n; i++)
	{
		for(int j=0; j<n; j++)
			cout << matrix[i][j] << ' ';
		cout << endl;
	}

	cout << endl << endl;

	int r = n, uk = 0;
	for(int i=0; i<n; i++,r--)
	{
		for(int k=0; k<r; k++)
		{
			cout << matrix[i][k] << ' ';
			uk ++;
		}
	cout << endl;
	}

	cout << endl << "ukupan broj elemenata iznad sporedne dijagonale: " << uk << endl << endl;

	cout << "parni i deljivi sa 7: ";
	int m = n;
	for(int i=0; i<n; i++,m--)
		for(int k=0; k<m; k++)
			if((matrix[i][k] % 7 == 0) && (matrix[i][k] % 2 == 0)) cout << matrix[i][k] << ' ';

	cout << endl << endl;

	cout << "nova matrica: " << endl;

	int matrix2[100][100];

	for(int i=0; i<n; i++)
		for(int j=0; j<n; j++)
			if(i == j) matrix2[i][j] = matrix[i][j];
			else matrix2[i][j] = 0;

	for(int i=0; i<n; i++)
	{
		for(int j=0; j<n; j++)
			cout << matrix2[i][j] << ' ';
		cout << endl;
	}


	return 0;
}
 
Hvala puno sto si izdvojio vreme pa mi napisao to.Koda je slabo bilo,tako da jeste bilo bas zapelo.Malo bedacki od mene da trazim ceo zadatak jeste,tako da hvala jos jednom.

Isto iz te grupe zadataka,prijavljuje mi gresku a ja ne znam sta ne valja ?

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

using namespace std;

main()
{
//velicina matrice
int n = 1;
//vrijednost elementa matrice
int val = 0;
//promenljiva k
int k = 0;

printf("Unesite velicinu kvadratne matrice M[nxn]. n = ");
scanf("%d", &n);

int m[n][n];

for(int i=0; i<n; i++) //petlja za redove
{
for(int j=0; j<n; j++) //petlja za kolone
{
//postavljamo elemente kvadratne matrice na 0
m[j] = 0;
}
}

for(int i=0; i<n; i++) //petlja za redove
{
for(int j=0; j<n; j++) //petlja za kolone
{
//Unosimo elemente kvadratne matrice
printf("Unesite element M%d%d = ", i + 1, j + 1);
scanf("%d", &val);
m[j] = val;
}
}

do
{
printf("Unesite k = ");
scanf("%d", &k);
}
while (k == 0);

printf("\nElementi su:\n");

for(int i=0; i<n; i++) //petlja za redove
{
for(int j=0; j<n; j++) //petlja za kolone
{
if((i+j+2) == k)
{
printf("%d ",m[j]);
}
}
}

printf("\n");
system("pause");
}
 
Poslednja izmena:
Хехе, динамички димензиониране матрице у C++ треба и динамички алоцирати (осим ако се не ради са maxCols/maxRows).

Види ово одонсно пробај претрагу на гуглу. Нпр. how to dynamically generate matrix in c++.
 
Ovako, imam apstraktnu klasu sa cistom virtuelno funkcijom. Iz te apstraktne klase imam dve izvedene klase(javno) u kojima treba da se redefinise cista virtuelna funkcija. Ta funkcija treba da vraca vrednost atributa iz privatnog dela te izvedene klase. Problem je to sto je jedan atribut float a drugi int. E sad postoji jos jedna klasa u kojoj postoji niz pointera na apstraktnu klasu i iz nje treba da pozovem funkcije za vracanje. Da li neko zna kako?
 
Ovako, imam apstraktnu klasu sa cistom virtuelno funkcijom. Iz te apstraktne klase imam dve izvedene klase(javno) u kojima treba da se redefinise cista virtuelna funkcija. Ta funkcija treba da vraca vrednost atributa iz privatnog dela te izvedene klase. Problem je to sto je jedan atribut float a drugi int.
Што се типа тиче, по мени мож`:

1. Да на бази раздвојиш методе које враћају различите типове.
2. Да видиш може ли то све да постане неки шаблон (template)
3. Да за све користиш float
4. Да направиш нови тип, који ће бити свестан шта носи (int, float), па да њега враћаш. Употреба void* и bool ако су само два типа.
5. Да употребиш void* па да на основу типа класе или неке друге инваријанте знаш како да га интерпретираш
6. ?

E sad postoji jos jedna klasa u kojoj postoji niz pointera na apstraktnu klasu i iz nje treba da pozovem funkcije za vracanje. Da li neko zna kako?
"Низ поинтера на класу". :) Не разумем шта имаш и шта с тим треба да радиш.
 
niz pointera na apstaktnu klasu
Kod:
 apstraktna_klasa** niz;
niz=new apstraktna_klasa*[velicina_niza];

Ja moram da pozovem te funkcije iz izvedenih klasa iz klase koja nema nista zajednicko(sem ovog niza pointera) sa apstraktnom i izvedenim klasama. Ne mogu da koristim templejt ili da stavim da su mi sve float.
 
Аха, низ показивача типа апстрактне класе. То јест, показивачи на објекте типа апстрактне класе. Провери увек и да није нешто == 0.
Ако се нешто није изменило у C++11, на класе не можеш да показујеш као у Јави.

За тип, пробај 4/5 до проналаска бољег решења.
 
Узгред, личи ми да си дошао са задатком са неког факса / школе, а у том случају највероватније постоји само један "исправан" начин за његово решавање. А ти си вероватно пропустио лекцију. :)

У том случају би требало да разговараш са асистентом, пошто овде можеш добити и решења другачија од очекиваних.
 

Back
Top