C++ zadaci,resenja,pitanja,tutoriali

pa text boxovi moraju da ti se zovu tako kao sto pise textbox1,textbox2 itd kod tebe se ne zovu tako i zato pise da nepostoje moras da ides tako gde se oblikuje forma i onda da ih nazoves tako isto tako i label nemas koji ti se zove label4 nego ti se zove drugacije, verovatno si im ti menjao vec tamo imena pa onda ako si im menjao netrebas vise da pises textbox1 neko to ime koje si mu dao.
 
Molim vas pomoc oko ovog problema.

Od tastature se ucitavaju N celi brojevi( N se unosi od tastature). Napisati program koji ce na ekran da ispecati dali uneseni broevi formiraju strogo rastuci niz(svaki element da je manji od svog sledbenika)

// Provjerava da li je niz rastuci
#include <iostream>
using namespace std;
int main()
{
int n,i;
cout<<„Koliko clanova niza, n= „;
cin>>n;
int niz[n];
bool uslov = true; // Varijabla [uslov] je logicka, i postavimo je na true @ tacno.
cout<<„Unesi brojeve: „<<endl;
for(i=0; i<n; i++)
cin>>niz;
// Ako u nizu nadjemo dva susjedna broja, a da je sadasnji veci od narednog, niz nije rastuci, a varijablu [uslov] postavimo na false @ netacno
for( i=0; i<n-1; i++)
if(niz>=niz[i+1]) // ispunjava se samo ako niz nije rastuci
uslov = false;
if(uslov == true)
cout<<„Jeste rastuci“<<endl;
else
cout<<„Nije rastuci“<<endl;

system(„PAUSE“);
return EXIT_SUCCESS;
}
 
hoću da mi program iz tekstualnog fajla čita karakter pa ga ispiše na ekranu, pa sledeći karakter pa ispiše na ekranu itd. ovo meni ne radi ali ne znam zašto


#include <iostream>
#include <fstream>


int main()
{
// najmanji ascii kod je 0x21. oduzima se 21. max je 0xff
int znak;
char zn;
// pretp da su poruke samo nizovi znakova, bez razmaka
std::ifstream fajl;
fajl.open("radar.txt", std::ios::in);
rad_obrada *rob=new rad_obrada();


if (fajl.is_open()) {

cout<<'p';
do {

fajl.get(zn);
std::cout<<zn;
znak=zn;
rob->parser(znak); // pokazivac na fju


} while ((znak!=EOF) || (rob->obradax()==100));

}
fajl.close();

ovo 'p' ispiše ali dalje ne ispisuje. koristim code::blocks
hvala
 
hoću da mi program iz tekstualnog fajla čita karakter pa ga ispiše na ekranu, pa sledeći karakter pa ispiše na ekranu itd. ovo meni ne radi ali ne znam zašto


#include <iostream>
#include <fstream>


int main()
{
// najmanji ascii kod je 0x21. oduzima se 21. max je 0xff
int znak;
char zn;
// pretp da su poruke samo nizovi znakova, bez razmaka
std::ifstream fajl;
fajl.open("radar.txt", std::ios::in);
rad_obrada *rob=new rad_obrada();


if (fajl.is_open()) {

cout<<'p';
do {

fajl.get(zn);
std::cout<<zn;
znak=zn;
rob->parser(znak); // pokazivac na fju


} while ((znak!=EOF) || (rob->obradax()==100));

}
fajl.close();

ovo 'p' ispiše ali dalje ne ispisuje. koristim code::blocks
hvala

Ne secam se bas najbolje toka u C++, morao bih da se podsetim, ali ako ti nesto znaci evo citanja karakter po karakter u C-u. Trebalo bi da je dostupan header stdio.h i da bez problema mozes da kompajliras.
Samo dodaj obradu i sve ostalo sto ti treba

Kod:
[COLOR="#00FF00"]#include <stdio.h>[/COLOR]

[B]int[/B] main()
{
    FILE *f = fopen([COLOR="#FF0000"]"dat.txt"[/COLOR], [COLOR="#FF0000"]"r"[/COLOR]);
    [B]char[/B] znak;
    [B]while[/B]((znak = fgetc(f)) != [COLOR="#EE82EE"]EOF[/COLOR])
    {
                [COLOR="#00FFFF"]//obrada...[/COLOR]
    }
    fclose(f);
    [B]return[/B] [COLOR="#EE82EE"]0[/COLOR];
}

EDIT:
U medjuvremenu sam malo cackao ovo, sad bi trebalo da radi. Mislim da je problem bila provera da li je karakter jednak EOF.
Metod get ucitava dok ne dodje do EOF, ali nisam siguran da li ce zaista i da iscita EOF. Kada sam pokrenuo, rezultat je bio taj sto zabode kad dodje do poslednjeg karaktera, tj ostane u beskonacnoj petlji i ispisuje poslednji karakter. Sto znaci da EOF nikada i ne ucita u karaktersku promenljivu. Najbolje je da vrsis ovakvu proveru (metod get vraca EOF kao povratnu vrednost ukoliko dodje do njega):
Kod:
[B]if[/B](fajl.is_open())
{
    cout << [COLOR="#FF0000"]'p'[/COLOR];
    [B]while[/B](fajl.get(zn))
    {
        std::cout << zn;
        znak = zn;
    }
}
Preostaje samo da ubacis jos onaj tvoj deo koji ti je trebao. A ako ova provera rob->obradax() == 100 mora da se obavi tek na kraju koraka petlje, onda dodaj jedan if na kraj. Samo pazljivo, posto ce onda uslov za izlazak iz petlje u tom if-u biti rob->obradax() != 100. :)
 
Poslednja izmena:
radim u code::blocks-u i hoce da upise u fajl, ali nece da cita iz njega. (sad sam izbacila petlju, samo sam htela da proverim citanje i upis)

Kod:
#include <iostream>
#include <fstream>

...

char zn;
  std::fstream fajl;
    fajl.open("radar.txt", std::ios::in | ios::out);
...


if (fajl.is_open()) {

    cout<<'p';


      fajl<<'k';
      fajl>>zn; (umesto ovog reda moze i fajl.get(zn);)


on upise u fajl taj 'k', ali ne cita iz fajla. sta uraditi?
 
Potrebna mi je pomoć oko jednog zadatka iz programskog jezika C. Treba napisati program koji iz datog fajla
"ocene.txt" čita i ispsuje podatke o studentima i njihove ocene na ispitu a zatimna osnovu njih treba da odredi
i ispiše studente koji nisu položili (dobili ocenu 5) i studente koji su položili ispit (dobili ocene 6,7,8,9 i 10).
Uspeo sam da učitam i ispišem podatke iz fajla ali neznam kako dalje. Evo šta sam do sada uradio:


#include<stdio.h>

#define MAX_IME 20
#define MAX_PREZIME 30
#define MAX_STUDENATA 100

typedef struct studenti
{
char ime[MAX_IME];
char prezime[MAX_PREZIME];
int brojindeksa, ocena;
} Studenti;

Studenti student[MAX_STUDENATA];

int broj_studenata = 0;

int ucitaj_studenta(FILE *f, Studenti *s)
{
fscanf(f, "%s%s%d%d", s->ime, s->prezime, &(s->brojindeksa), &(s->ocena));
if(feof(f))
return 0;
return 1;
}

void ispisi_studente()
{
int i;
for(i = 0; i < broj_studenata; i++)
printf("%-10s %-15s %-15d %-5d\n", student.ime, student.prezime, student.brojindeksa, student.ocena);
}

int main()
{
FILE *f;
f = fopen("C:\\ocene.txt", "r");

if(f == NULL)
{
printf("Greska prilikom otvaranja datoteke\n");
return 1;
}

while(ucitaj_studenta(f, &student[broj_studenata]))
broj_studenata++;

printf("Ime Prezime Broj indeksa Ocena\n");
printf("-------------------------------------------------------------\n");

ispisi_studente();

fclose(f);

printf("-------------------------------------------------------------\n");
}
 
Prvi problem koji sam uocio prilikom ucitavanja je da se ne ispisuje poslednji student ako nema novog reda na kraju fajla. Fora je to sto ukoliko nema novog reda, cim iscitas ocenu poslednjeg studenta, javlja se EOF, i izlazis iz petlje, pa se zbog toga ne inkrementira brojacka promenljiva. Mislim da je ovo resenje bolje:
Kod:
[B]int[/B] ucitaj_studenta(FILE *f, Studenti *s)
{
	[B]int [/B]rez = fscanf(f, [COLOR="#FF0000"]"%s%s%d%d"[/COLOR], s->ime, s->prezime, &(s->brojindeksa), &(s->ocena));
	if(rez != [COLOR="#EE82EE"]4[/COLOR])
		[B]return [/B]0;
	[B]return [/B][COLOR="#EE82EE"]1[/COLOR];
}
Ili ako cemo da preterujemo :lol:
Kod:
[B]int [/B]ucitaj_studenta(FILE *f, Studenti *s)
{
	[B]return [/B](fscanf(f, [COLOR="#FF0000"]"%s%s%d%d"[/COLOR], s->ime, s->prezime, &(s->brojindeksa), &(s->ocena)) == [COLOR="#EE82EE"]4[/COLOR]) ? [COLOR="#EE82EE"]1 [/COLOR]: [COLOR="#EE82EE"]0[/COLOR];
}

Evo koda:

Kod:
[COLOR="#008000"]#include<stdio.h>

#define MAX_IME 20
#define MAX_PREZIME 30
#define MAX_STUDENATA 100[/COLOR]

[B]typedef [/B][B]struct [/B]studenti
{
	[B]char [/B]ime[[COLOR="#EE82EE"]MAX_IME[/COLOR]];
	[B]char [/B]prezime[[COLOR="#EE82EE"]MAX_PREZIME[/COLOR]];
	[B]int [/B]brojindeksa, ocena;
} Studenti;

Studenti student[[COLOR="#EE82EE"]MAX_STUDENATA[/COLOR]];

[B]int [/B]broj_studenata = [COLOR="#EE82EE"]0[/COLOR];

[B]int [/B]ucitaj_studenta(FILE *f, Studenti *s)
{
	[B]int [/B]rez = fscanf(f, [COLOR="#FF0000"]"%s%s%d%d"[/COLOR], s->ime, s->prezime, &(s->brojindeksa), &(s->ocena));
	[B]if[/B](rez != [COLOR="#EE82EE"]4[/COLOR])
		[B]return [/B][COLOR="#EE82EE"]0[/COLOR];
	[B]return [/B][COLOR="#EE82EE"]1[/COLOR];
}

[B]void [/B]ispisi_studente()
{
	[B]int [/B]i;
	[B]for[/B](i = [COLOR="#EE82EE"]0[/COLOR]; i < broj_studenata; i++)
		printf([COLOR="#FF0000"]"%-10s %-15s %-15d %-5d\n"[/COLOR], student[i].ime, student[i].prezime, student[i].brojindeksa, student[i].ocena);
}

[B]int [/B]main()
{
	FILE *f;
	[B]int [/B]i;
	f = fopen([COLOR="#FF0000"]"ocene.txt"[/COLOR], [COLOR="#FF0000"]"r"[/COLOR]);

	[B]if[/B](f == NULL)
	{
		printf([COLOR="#FF0000"]"Greska prilikom otvaranja datoteke\n"[/COLOR]);
		[B]return [/B][COLOR="#EE82EE"]1[/COLOR];
	}

	[B]while[/B](ucitaj_studenta(f, &student[broj_studenata]))
		broj_studenata++;

	printf([COLOR="#FF0000"]"Ime Prezime Broj indeksa Ocena\n"[/COLOR]);
	printf([COLOR="#FF0000"]"-------------------------------------------------------------\n"[/COLOR]);

	ispisi_studente();

	printf([COLOR="#FF0000"]"-------------------------------------------------------------\n"[/COLOR]);

	printf([COLOR="#FF0000"]"Studenti koji su polozili\n"[/COLOR]);
	printf([COLOR="#FF0000"]"Ime Prezime Broj indeksa Ocena\n"[/COLOR]);
	printf([COLOR="#FF0000"]"-------------------------------------------------------------\n"[/COLOR]);
	[B]for[/B](i = [COLOR="#EE82EE"]0[/COLOR]; i < broj_studenata; i++)
		[B]if[/B](student[i].ocena > [COLOR="#EE82EE"]5[/COLOR])
			printf([COLOR="#FF0000"]"%-10s %-15s %-15d %-5d\n"[/COLOR], student[i].ime, student[i].prezime, student[i].brojindeksa, student[i].ocena);
	printf([COLOR="#FF0000"]"-------------------------------------------------------------\n"[/COLOR]);

	printf([COLOR="#FF0000"]"Studenti koji nisu polozili\n"[/COLOR]);
	printf([COLOR="#FF0000"]"Ime Prezime Broj indeksa Ocena\n"[/COLOR]);
	printf([COLOR="#FF0000"]"-------------------------------------------------------------\n"[/COLOR]);
	[B]for[/B](i = [COLOR="#EE82EE"]0[/COLOR]; i < broj_studenata; i++)
		[B]if[/B](student[i].ocena == [COLOR="#EE82EE"]5[/COLOR])
			printf([COLOR="#FF0000"]"%-10s %-15s %-15d %-5d\n"[/COLOR], student[i].ime, student[i].prezime, student[i].brojindeksa, student[i].ocena);
	printf([COLOR="#FF0000"]"-------------------------------------------------------------\n"[/COLOR]);

	fclose(f);
}
 
Poslednja izmena:
Hvala najlepše. Mnogo ste mi pomogli. Ja sam tek počeo da učim C i C++ i treba mi dosta vremena dok neke stvari ukapiram. Dosta stvari uradim i sam ali mi je potrebna i vaša pomoć. Evo još jednog zadatka koji ne mogu da rešim, ali ovaj neznam ni kako da započnem.

U redu u samoposluzi se nalazi N kupaca. Vreme opsluživanja od strane prodavačice za svakog kupca je dato nizom t[0 … n-1].
Odrediti vreme čekanja svakog kupca i rezultat oštampati na ekran. Primer. Drugi kupac ce da ceka samo prvog, treci kupac ceka prvog I drugog, itd…
 
Rezultat tog programa je N suma, gde ce i-ta suma zapravo biti zbir prvih i elemenata u nizu t.
U pseudo kodu bi to ovako izgledalo:

Screenshot_1.jpg


Odnosno u C-u:

Kod:
suma = 0;
for(i = 0; i < N; i++)
{
    suma += t[i];
    printf("%d kupac ceka %d.\n", i, suma);
}

Vrlo lako pomocu indukcije dokazes korektnost ovoga:

Baza indukcije za N = 1: Postoji samo jedan kupac i on ce da ceka samo onoliko koliko traje vreme opsluzivanja od strane prodavacice, a to je t[0].
Induktivna hipoteza: Znamo da odredimo vreme cekanja za prvih K kupaca, gde je K < N.
Induktivni korak: Izracunavamo vreme cekanja N-tog kupca. Vreme cekanja za tog kupca je vreme koje je potrebno da se usluzi prvih N - 1 kupaca + vreme opsluzivanja N-tog kupca. A vreme da se usluzi prvih N - 1 kupaca znamo na osnovu induktivne hipoteze.

Invarijanta gore navedene petlje je da je vrednost promenljive suma pre petlje 0, sto zapravo i jeste istina, jer ako nema kupaca, vreme cekanja je 0.
U i-toj iteraciji petlje imaces vreme cekanja za i-tog kupca. I po izlasku iz petlje u promenljivoj suma ce se naci vrednost koja predstavlja vreme cekanja (N - 1)-og kupca.
(N - 1) zato sto smo pretpostavili da je indeks prvog kupca 0.

Resenje problema je i vise nego ocigledno, nije bilo potrebe za dokazom, ali nema veze, ne moze da skodi. :)
 
Poslednja izmena:
Pokušao sam kao što ste mi napisali ali ne računa vreme čekanja kako treba. Sigurno negde grešim. Evo kako sam ja uradio:

#include <stdio.h>

int main()
{
int suma, i, N, t[5];
suma = 0;
printf("Unesite broj kupaca: ");
scanf("%d",&N);
for(i = 1; i <= N; i++)
{
suma += t;
printf("%d kupac ceka %d.\n", i, suma);
}
}

screenshot_197.jpg
[/url][/IMG]
 
Problem je sto prvo moras da inicijalizujes niz t, tj pomocu neke petlje moras uneti vrednosti niza t, da zadas vreme cekanja za svakog kupca. A ovako bez inicijalizacije pokupljena je neka stara vrednost koja se nalazila na toj memorijskoj lokaciji.


Dakle, morala bi ovakva inicijalizacija da bude
Kod:
for(i = 0; i < n; i++)
{
    printf("Unesite vreme opsluzivanja kupca %d\n", i);
    scanf("%d", &t[i]);
}
 
Uradio sam kao što si mi gore napisao i sad radi dobro. Samo u zadatku piše da je vreme opsluživanja dato nizom t[0 … n-1]. A ja sam uradio tako da se vreme opsluživanja za svakog narednog kupca unosi. Kako bih moglo da se uradi kao što je napisano u zadatku?
Kod:

#include <stdio.h>

int main()
{
int suma, i, N, t[50];
suma = 0;
printf("Unesite broj kupaca:");
scanf("%d",&N);
for(i = 1; i <= N; i++)
{
printf("Unesite vreme opsluzivanja kupca %d:", i);
scanf("%d", &t);
suma += t;
printf("\n%d. kupac ceka %d minuta.\n\n", i, suma);
}
}
 
Uradio sam kao što si mi gore napisao i sad radi dobro. Samo u zadatku piše da je vreme opsluživanja dato nizom t[0 … n-1]. A ja sam uradio tako da se vreme opsluživanja za svakog narednog kupca unosi. Kako bih moglo da se uradi kao što je napisano u zadatku?

Pa vrednosti su date nizom, a te vrednosti ce biti neke nasumicne ukoliko sam ne inicijalizuejs niz. Zato su se i javljali oni ogromni brojevi. Svakako moras nekako popuniti taj niz, samo je na tebi da odlucis kako. Da li ces odmah inicijalizovati pri deklaraciji, popuniti preko standardnog ulaza ili procitati podatke iz datoteke. Dakle, tebi je ulaz programa niz koji predstavlja vreme opsluzivanja kupca od strane prodavacice, a izlaz programa je ukupno cekanje kupca u redu, ukljucujuci i samo opsluzivanje od prodavacice.
 
Poslednja izmena:
Da li neko moze da mi da odgovor na ovo unapred hvala

int main()
{
int ChooseABCD;
int ChooseAgain;
while (1)
{
printf("Chose A,B,C or D by typing 1,2,3,4 here:");
scanf("%d", &ChooseABCD);
double** Thomas = NULL;
double*** AMatrix = NULL;
if (ChooseABCD == 1)
{
printf("At this place in code we are inputing n, a, b, r which define Av = r\n");
Routine_a();
}
else if (ChooseABCD == 2)
{
printf("At this place in code we are reading from file n and nodes (Xk, Yk)\n");
Routine_b();
}
else if (ChooseABCD == 3)
{
printf("At this place in code we inputing n and nodes (Xk, Yk)\n");
Routine_c();
}
else if (ChooseABCD == 4)
{
printf("At this place in code we inputing n and X coordinates for first and last node\n");
Routine_d();
}
printf("\nRun again? (Type 1):\n");
scanf("%d", &ChooseAgain);
if (ChooseAgain < 1) break;
}
system("pause");
return 0;
}

}
 
zdravo svima
relativno skoro sam se Basica prebacio na C
posto mi programiranje nije strano jer znam Basic polako ulazim u fazon
medjutim naisao sam na problem na koji google nikako da mi odgovorim pa sam onda odlucio ovde da postavim to isto pitanje
naime
zelim da postavim uslov
ako je ime = srecko onda napisi poznajem te
a na sve ostalo napisi drago mi je
na ovaj moj program kompjuter mi uvek daje isti odgovor pa vas sve molim da mi pomognete ogo resavanja

evo ga moj program

#include<iostream>
#include<stdio.h>
main()
{
char ime;
printf("ime :");
scanf("%s",&ime);
if(ime=='srecko')
{
printf("poznajemo se");
}
else
{
printf("drago mi je",ime);
}
system("pause");
}
 
C programski jezik ima velikih problema sa manipulacijom stringova. Samo deklarisanje promenljive char ime znači da ti samo jedan jedini znak unosiš u tu promenljivu i ni jedan jedini znak više. Ako želiš da to bude reč, cela reč, ili pak rečenica, moraš napraviti niz karaktera. Ovako :

char Ime[30];

Na taj način obezbeđuješ dovoljan broj karaktera. C programski jezik je trapav za rad sa stringovima i prilično nezahvalan. Još nešto, ako želiš da se u else prikaže njegovo ime, moraš staviti placeholder za promenljivu ime. Dakle: printf("Mi se znamo %s i vrlo mi je drago zbog toga" , Ime);
 
Kao prvo, da bi sacuvao nisku karaktera, potreban ti je niz, kao sto @Alatoru rece.
I ono sto je potrebno da znas je da se u toj pokazivackoj promenljivoj za niz nece nalaziti sama ta niska, vec samo pokazivac na adresu prvog karaktera u nizu.
Ukoliko hoces da poredis dva stringa, to ne mozes uraditi sa operatorom jednakosti kao sto si pokusao, jer na taj nacin samo poredis adrese.
Za poredjenje dve znakovne niske koristi funkciju strcmp, ili pokusaj da implementiras tvoju verziju funkcije za poredjenje dve niske, vezbe radi.

EDIT:

I radis li u cistom C-u? Posto vidim da imas ukljucenu datoteku iostream.h.
 
Poslednja izmena:
Kao prvo, da bi sacuvao nisku karaktera, potreban ti je niz, kao sto @Alatoru rece.
I ono sto je potrebno da znas je da se u toj pokazivackoj promenljivoj za niz nece nalaziti sama ta niska, vec samo pokazivac na adresu prvog karaktera u nizu.
Ukoliko hoces da poredis dva stringa, to ne mozes uraditi sa operatorom jednakosti kao sto si pokusao, jer na taj nacin samo poredis adrese.
Za poredjenje dve znakovne niske koristi funkciju strcmp, ili pokusaj da implementiras tvoju verziju funkcije za poredjenje dve niske, vezbe radi.

EDIT:

I radis li u cistom C-u? Posto vidim da imas ukljucenu datoteku iostream.h.

nemojte mi se smejati ali zaista ne znam dal radim u c ili c++
tek sam poceo, citam tutorijale i snalazim se, one pocetnicke programe sto sam radio u VB sada radim ovde, naravno ne vizuelne
pomalo me i zbunjuje sto u nekim tutorijalima se koriste komande printf scanf a u nekim cin cout
sad me jos dodano zbuni ovo sto u c(++) nemogu da unesem niz karaktera tako jednostavno posto za pocetak radim neke programe navedenog primera cisto da shvatim sintaksu
 
Da ne bi bilo zabune, C programski jezik i C++ se znatno razlikuju. Iako je C preteča C++ jezika, postoje razlike. C++ jezik je predstavio objektno orjentisano programiarnje, što je esencijalni deo današnjeg programiranja. Ali, da se ne bi mnogo bunio sa tim stvarima, C jezik sadrži sintaksu poput printf, scanf. cout je za C++. Imaj u vidu da C++ takođe može pozvati funkcije poput printf i scanf , ako include-uje biblioteku tih funkcija. Koji kompajler koristiš za C jezik? CodeBlocks? Dev C++?
 
Da ne bi bilo zabune, C programski jezik i C++ se znatno razlikuju. Iako je C preteča C++ jezika, postoje razlike. C++ jezik je predstavio objektno orjentisano programiarnje, što je esencijalni deo današnjeg programiranja. Ali, da se ne bi mnogo bunio sa tim stvarima, C jezik sadrži sintaksu poput printf, scanf. cout je za C++. Imaj u vidu da C++ takođe može pozvati funkcije poput printf i scanf , ako include-uje biblioteku tih funkcija. Koji kompajler koristiš za C jezik? CodeBlocks? Dev C++?

koristim Dev C++
samo sto sam presao sa basica, sa zeljom da nesto novo pocnem da ucim a vec sam izgubio volju.
mislio sam da je razlika u sintaksi (koja se verovatno brzo nauci)
medjutim vidim sad da su skroz drugaciji po principu rada
pored navedenog primera u kom imam problem sa unosom stringa naisao sam na jos jedan problem koji me zbunjuje
da ne kazem tera me da kazem kako C ima cudnu sintaksu

Evo kakav sam program zamislio i koji cudan problem mi se pojavio
program pita korisnika koliko slucajnih brojeva da ispise u rasponu 2-15 (karte)
zatim program ispisuje prvi slucajan broj i ceka odgovor korisnika
kad dobije odgovor program bi trebalo da ispise drugi slucajan broj...ceka odgovor, treci slucajan... do kraja petlje

medjutim, program ne radi kako bi trebalo. ako slucajno upisem odgovor od 3 karaktera program mi ispise cetri slucajna broja
ako upisem odgovor od 5 karaktera, petlja se izvrsi 6 puta

evo koda

void izvlacenje void){

int karta,n,z;
n=1;
char odgovor;
printf ("q = +1 \na = 0 h = stanje\nz = -1 b = prekid\n\n"); //uputstvo za igru
printf ("koliko izvlacenja: "); //koliko slucajnih brojeva zelim da mi program ispise
scanf ("%d",&z);
srand((unsigned)time (NULL));

do {
karta=rand()%15;
printf ("%d: %d=\n",n,karta);
scanf ("%c\n",&odgovor);
n=n+1;

} while(n<=z);
system("PAUSE");
}

pomazite ljudi, ili je ovaj C cudan jezik, ili ga ja pogresno zamisljam :D
 
Prva stvar, opet si stavio char odgovor. Ne treba biti samo char odgovor, nego char odgovor[30] , što znači da je to niz od 30 karaktera. Tako on može uzeti ceo unos od korisnika. Dalje, ako želiš da se nešto uradi tačno 5 puta recimo ili onoliko puta koliko je korisnik tražio, koristi for petlju. Ti ovde koristiš do while. Do while se koristi kada želiš prvi put apsolutno izvršiti zadatak, pa onda proveriti uslov. A ti odmah počni sa proveravanjem uslova ovako:

for(int n = 0 ; n < z; n++) {
karta=rand()%15;
printf ("%d: %d=\n",n,karta);
scanf ("%c\n",&odgovor);
}
 

Back
Top