C++ zadaci,resenja,pitanja,tutoriali

Mozes ovako:

Nadjes gde se u windows folderu nalazi folder startup, i onda uneses metodu koja ce prilikom pokretanja tvog programa da iskopira izvrsni fajl tvog programa u taj folder(startup u windowsu).
Znaci, proguglaj koja je metoda za kopiranje fajla u C/C++. Mozes posle i da ubacis uslov da preskoci kopiranje ako fajl vec postoji u startup folderu, ili ako ga vec pokrece iz startup foldera(znaci prilikom podizanja windowsa) itd...
 
Poslednja izmena:
@2pac:
Pa sad automatski da pocne program pri startu mi nikad nije trebalo tako da nemogu da ti kazem nista 100% tacno ali video sam tu i tamo resenja za ovaj problem na netu....uglavnom fora je koliko sam provalio da svi programi koji pocnu pri startu imaju registry key za to ili tako nesto nisam bas programirao u Win32 ali uglavnom pogledaj malo dokumetnaciju postoji funkcije da upises u registry da pocne automatski...a mozes i tu foru sa startup programom koja je mozda i bolja
uglavnom google ti je priljatelj i pogledaj malo msdn dokumentaciju
evo nesto sto bi ti mozda pomoglo
 
Ako neko ima vremena i volje da mi pomogne bio bih mu veoma zahvalan...

Odrediti koliko puta se maksimalna vrednost ponavlja u unetom nizu(npr. za niz 5 9 6 9 3 5 9 4.maksimalna vrednost je 9, javlja se 3 puta)

Odrediti koliko puta i na kojim pozicijama u matrici celih brojeva !, dimenzija NxM se javlja zadata velicina K.

E sad mi treba algoritam i kod za ova 2 zadatka...
 
najbrži način za to u c-u je:


Princip je prost: svaki član niza podelimo celobrojno sa maksimalnom vrednošću niza. U svakom slučaju će rezultat biti nula, osim ako se maksimalna vrednost poklapa sa vrednošću člana niza....

Na primer:

niz 9 5 2 9 3 1 2 5 9

odredimo max vrednost: 9

Podelimo sve celobrojno sa 9:

1 0 0 1 0 0 0 0 1

Sumiramo niz:

1+0+0+1+0+0+0+0+1=3

Kod:
max=x[0];
for(i=1;i<n; i++)
{
if (max<x[i])
max=x[i];
}
for(i=0;i<n; i++)
{
suma+=x[i]/max;
}
 
za prvi jednostavno nadji najvecu vrednost u nizu i onda prodji kroz niz i povecavaj neki brojac za svako pojavljivanje to ma vrednosti - може и у једном пролазу кроз низ, али и ово решење је сасвим ок!

ma ja ali vidis da covek ne zna hocu da mu objasnim sto jednostavnije :D
 
Kod:
#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argv, int *argc[])
{
    int n,m;
    cin >> n >> m;
    int mat[n][m];
    int br=0;
    int k;
    cin >> k;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            cin >> mat[i][j];
            if (mat[i][j]==k)
            {
             br++;
             cout << i << " " << j << "\n";
            }
            
        }
    }
    cout << br;
    system("PAUSE");
    return 0;
}

pisao sam u notepadu tako da nzm jel radi ali mislim da je ok :D


zadatak br. 2
 
Pozdrav svima, novi sam ovdje. :-) Imam je 2 zadatka. Pa da vidimo:

Zadatak A:
Napišite funkciju ZRCALO koja nad zadanim 2D nizom kreira zrcalnu kopiju. U polju su zapisani cjelobrojni podaci. Veličina polja neka je 4x4.
Primjer:
1 5 9 13 13 9 5 1
2 6 10 14 -> 14 10 6 2
3 7 11 15 15 11 7 3
4 8 12 16 16 12 8 4
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Zadatak B:
Napišite funkciju PROVJERA koja će imati jedan argument: 1D polje s imenima osoba. Funkcija provjerava da li se u polju nalazi neko ime više puta zapisano. Ukoliko se određeno ime ponavlja više puta, funkcija vraća boolean vrijednost false. U slučaju da je sve u redu funkcija vraća vrijednost true.
 
Evo ga prvi:

Kod:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int mat[4][4], i, j;
    
    for (i=0;i<4;i++)
       for (j=0;j<4;j++) cin >> mat[i][j];
    
    
    cout << "\n"; 
    
    for (i=0;i<4;i++)
    {
        
     for (j=3;j>=0;j--) cout << mat[i][j] << " ";
     
     
     cout << "\n";   
    }
    
    
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Kod:
max=x[0];
for(i=1;i<n; i++)
{
if (max<x[i])
max=x[i];
}
for(i=0;i<n; i++)
{
suma+=x[i]/max;
}
Јој, Паганко. :D То може лепо да изгледа у матлабу. Ја бих га у C ипак написао овако:

Kod:
  int max = arr[0];
  int count = 1;
  for(i=1; i<n; i++) {
    if(arr[i] > max) {
      count = 1;
      max = arr[i];
    } else if(arr[i] == max) {
      count++;
    }
  }
 
Jel mozes malo da pojasnis 2. zadatak? Nije mi bas jasan :D
Ваљда је недоумица везана за тип података. Пошто функција има један аргумент, препоручујем или const vector<string>& или const char*, при чему су код другог имена дата у једном једином стрингу, а раздвојена су неким сепаратором. Углавном, сам алгоритам може да буде паметан и да хешира речи зарад бржег поређења :) али верујем и да је довољно да се испробавају сви парови имена док се не наиђе на два иста (return false) или не претражи све (return true).
 
evo 1 zadatak pa bi molio pomoc oko ovg zadatka neide mi nikako:
napisati program u c++, kojim se na osnovu broja poena koje je osvojio ucenik odredjuje odjena prema tabeli
poeni ocjena
90...100 5
75...89 4
60...74 3
45...59 2
0...44 1

molim brz pdgovor

Što ova tema nije lepljiva?
to je lako Elvire, evo ja sad prvi put uz tvoj zadatak radim u C++ (Console ap) i uradio sam za 2 minuta :)
Kod:
#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;
int main()
{
	ponovi:
	cout << "Unesite broj bodova koji ste osvojili: ";
	string str;
	getline (cin,str);
	int bodovi = atoi(str.c_str());
	if(bodovi>90 && bodovi<=100)
	{
		cout << "dobili ste 5";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			goto ponovi;
		}
		else
		{
			return 0;
		}
	}
	else if(bodovi>75 && bodovi <89)
	{
		cout << "dobili ste 4";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			goto ponovi;
		}
		else
		{
			return 0;
		}
	}
	else if(bodovi>60 && bodovi <74)
	{
		cout << "dobili ste 3";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			goto ponovi;
		}
		else
		{
			return 0;
		}
	}
	else if(bodovi>45 && bodovi <59)
	{
		cout << "dobili ste 2";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			goto ponovi;
		}
		else
		{
			return 0;
		}
	}
	else if(bodovi>0 && bodovi <44)
	{
		cout << "dobili ste 1";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			goto ponovi;
		}
		else
		{
			return 0;
		}
	}
	else
	{
		cout <<"UNELI STE BROJ KOJI NIJE U OPSEGU (0-100)";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			goto ponovi;
		}
		else
		{
			return 0;
		}
	}
	getchar();
	return 0;
}


EDIT: Ako ti je goto cudan, mozes i ovako

Kod:
#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;
int main()
{
	while(true)
	{
	cout << "Unesite broj bodova koji ste osvojili: ";
	string str;
	getline (cin,str);
	int bodovi = atoi(str.c_str());
	if(bodovi>90 && bodovi<100)
	{
		cout << "dobili ste 5";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			continue;
		}
		else
		{
			break;
		}
	}
	else if(bodovi>75 && bodovi <89)
	{
		cout << "dobili ste 4";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			continue;
		}
		else
		{
			break;
		}
	}
	else if(bodovi>60 && bodovi <74)
	{
		cout << "dobili ste 3";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			continue;
		}
		else
		{
			break;
		}
	}
	else if(bodovi>45 && bodovi <59)
	{
		cout << "dobili ste 2";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			continue;
		}
		else
		{
			break;
		}
	}
	else if(bodovi>0 && bodovi <44)
	{
		cout << "dobili ste 1";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			continue;
		}
		else
		{
			break;
		}
	}
	else
	{
		cout <<"UNELI STE BROJ KOJI NIJE U OPSEGU (0-100)";
		cout << "\nponovo(DA/NE)?";
		string repeat;
		getline(cin,repeat);
		if(repeat == "DA")
		{
			continue;
		}
		else
		{
			break;
		}
	}
	}
	getchar();
	return 0;
}
 
Poslednja izmena:
^^
Задатак: види можеш ли да напишеш решење тако да се на основу поена оцена добије директно. Без if-else if конструката.

P.S.
Наизглед ниси покрио 100-ку.

Moze Switch, case..
Moze (USLOV) ? TRUE : FALSE
Moze i rekurzivno, ali bi morao koristiti neku od petlji ili ovo iznad

100tku <= (ispravio sam)
 
Poslednja izmena:
Такође ми изгледа да оне провере да ли треба 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];
}
 

Back
Top