Ja planiram to izvesti putem usb-a imam sklop za to.. a i izgleda mi modernije nego paralel i to..? :D
Programiranje u C-u - od svega pomalo
- poruka: 1.661
- |
- čitano: 384.811
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Možda je modernije, ali teško da je jednostavnije od serijskog porta s kojim u C-u barataš kao s datotekom i ne treba ti nikakav poseban driver.
Edit:
Palo mi je na pamet, zašto ne bi onda išao na bežičnu komunikaciju, recimo preko Bluetootha pa dodao kotače da kontroler bude mobilan?
Pozdrav ljudi!
Radim neku TXT igru, i sad bi htio da bude malo bolja i da ima zvuk.
Sad, ja snimim neki govor stavim ga u MP3 ali ga neznam pokrenut.
Ima li netko neki jednostavan program za to?
Hvala!
Program omogućuje unos dnevnih temperatura zraka u intervalu zadanom na ovaj način: 1. dan promatranja je 1. dan u godini u kojem je dnevna temp. zraka 10 C. Mjerenje prestaje onog dana kada temperatura postane viša od 25 C. Potrebno je izračunati broj dana u kojem je temperatura bila između 10-25 C te sredjnu temperaturu promatranog intervala
pomoću do-while petlje .... pls pomoć :S
Pa u cemu je problem? Stvoris integer polje od recimo 365 clanova, te ga onda sa scanf u petlji krenes popunjavati. U slucaju prvog broja gnjavis korisnika ponavljanjem unosa tako dugo dok prvi broj ne bude u dopustenom iznosu, petlja se ponavlja dok korisnik ne unese broj veci od 25.
Nakon toga proletis kroz dobiveno polje popisujuci broj dana u kojima je temperatura 10-25 °C, te zbrajas njihove temperature koje na kraju podjelis sa brojem tih dana da bi dobio prosjek.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int dan=-1, temperature[365], n, brojdana=0, zbrojtemp=0;
do
{
dan++;
printf("Unesite temperaturu za %d. dan: ", dan+1);
scanf("%d", &temperature[dan]);
if (temperature[0]<10)
do
{
printf("Unesite temperaturu za %d. dan: ", dan+1);
scanf("%d", &temperature[dan]);
}
while(temperature[0]<10);
}
while(temperature[dan]<=25);
for (n=0; n<dan; n++)
if (temperature[n]>9 && temperature[n]<26)
{
zbrojtemp+=temperature[n];
brojdana++;
}
printf("\nBroj dana u kojima je temperatura bila izmedu 10 i 25 stupnjeva je: %d", brojdana);
printf("\nProsjecna dnevna temperatura tih dana bila je: %d stupnjeva celzijevih\n", zbrojtemp/brojdana);
system("pause");
return 0;
}
Malo sam zbrljao prvu petlju pa mi pocetna vrijednost dana mora biti -1, siguran sam da se to moze i pametnije napraviti, ali mi se nije dalo previse razmisljati. Takoder druga petlja ukljucuje i dane cija je temperatura 10 i 25 stupnjeva, to se lako prepravi ako se ni ta dva broja ne racunaju.
Moglo bi i bez polja, petljom while se odredi da unos počne sa temperaturom 10, a unos se u petlji do-while vrši dok temperatura ne dostigne 25.
#include<stdio.h>
int main()
{
int brojDana = 0, cijeliInterval = 0;
float dnevnaTemperatura = 0, suma = 0;
while (dnevnaTemperatura < 10)
{
printf("Unesi dnevnu temperaturu: ");
scanf("%f", &dnevnaTemperatura);
}
do
{
if(dnevnaTemperatura >= 10)
{
brojDana++;
}
suma += dnevnaTemperatura;
cijeliInterval++;
printf("Unesi dnevnu temperaturu: ");
scanf("%f", &dnevnaTemperatura);
}while(dnevnaTemperatura <= 25);
printf("Broj dana sa dnevnom temperaturom 10-25: %d", brojDana);
printf("\nProsjecna temperatura u tom intervalu: %.2f", suma/cijeliInterval);
}
traži se interval, a ne cijela godina, a u tom intervalu se izlista broj dana sa temperaturom 10-25, i prosjek tog cijelog intervala
Hvala svima kolko vas ima...
Zašto skoro svako od vas koristi printf a ne cout? >.>
Zašto skoro svako od vas koristi printf a ne cout? >.>
printf je funkcija u C-u (ima je i u C++-u, Javi, PHP-u, a vjerojatno i u još nekim jezicima), a cout je objekt u C++-u.
traži se interval, a ne cijela godina, a u tom intervalu se izlista broj dana sa temperaturom 10-25, i prosjek tog cijelog intervala
Znam, ali mi se ucinilo da bi polje sa vrijednostima za cijelu godinu bilo blize onome sto bi u nekakvom stvarnom programu takve vrste dobio, onda bi iz takvog polja morao probirati zeljene vrijednosti. No vjerojatno sam previse zabrijao...
Kao sto rekoh, moze se i pametnije. Ti si to lijepo pokazao xD
traži se interval, a ne cijela godina, a u tom intervalu se izlista broj dana sa temperaturom 10-25, i prosjek tog cijelog intervala
Znam, ali mi se ucinilo da bi polje sa vrijednostima za cijelu godinu bilo blize onome sto bi u nekakvom stvarnom programu takve vrste dobio, onda bi iz takvog polja morao probirati zeljene vrijednosti. No vjerojatno sam previse zabrijao...
Kao sto rekoh, moze se i pametnije. Ti si to lijepo pokazao xD
Nije loše da je više verzija, to nas sve "brusi"
kaže mi prfa. da se taj zadatak riješi s jednom do-while petljom, kako god sam pokušo nevalja... pa ako nije nekom problem pokazat :S
#include <stdlib.h>
#include <stdio.h>
int main()
{
int temp=0, zbrojtemp=0, dan=0;
do
{
printf("Unesite temperaturu: za %d. dan ", dan+1);
scanf("%d", &temp);
if (temp>9 && temp<26)
{
dan++;
zbrojtemp+=temp;
}
}
while(temp<26);
if (dan)
{
printf("\nBroj dana u kojima je temperatura bila izmedu 10 i 25 stupnjeva je: %d", dan);
printf("\nProsjecna dnevna temperatura tih dana bila je: %.1f stupnjeva celzijevih\n", (float)zbrojtemp/dan);
}
else
printf("\nNema podataka u trazenom intervalu\n");
system("pause");
return 0;
}
...
if (temp>9 && temp<26)
...
while(temp<26);
Ovo ti nije uputno raditi. Recimo da ti onda profesor kaže da se temperature mogu unositi i u decimalnom obliku (recimo 25.5), onda ti program neće više funkcionirati ispravno - morat ćeš ići mijenjati granice. Znači, ako se kaže da je temperatura maksimalno 25, onda stavi uvjet <= 25, kao što je to Floki učinio. To što si napravio bi možda imalo smisla kad bi bilo u svrhu neke optimizacije - ali ovdje nema.
Kvaka je u tome da je profa vjerojatno mislio da se poslije prvog unosa od 10, mogu unositi i niže vrijednosti
lukavi neki profa, sigurno traži da se posije prvog unosa od 10 može unijeti npr 9, jer ako je danas zagrijalo, sutra možda bude kiša.
On traži sistem npr:
10, 9, 8, 10, 12, 15, 14, 20, 21, 27
E sad u tom intervalu traži da se izlista broj dana sa temperaturom većom ili jednako 10, i uz to traži prosječnu temperaturu CIJELOG intervala
I sve to u jednoj jedinoj do-while petlji
lukava profa, još da je žensko, pa da je pozdraviš
#include<stdio.h>
int main()
{
int brojDana = 0, cijeliInterval = 0, kontrolnaVarijabla = 0;
float dnevnaTemperatura = 0, suma = 0;
do
{
if(dnevnaTemperatura >= 10 && brojDana == 0)
{
kontrolnaVarijabla++;
}
if(kontrolnaVarijabla != 0)
{
cijeliInterval++;
suma += dnevnaTemperatura;
if(dnevnaTemperatura >= 10)
{
brojDana++;
}
}
printf("Unesi dnevnu temperaturu za %d. dan: ", cijeliInterval+1);
scanf("%f", &dnevnaTemperatura);
}while(dnevnaTemperatura <= 25);
printf("Broj dana sa dnevnom temperaturom 10-25: %d", brojDana);
printf("\nProsjecna temperatura u tom intervalu: %.2f", suma/cijeliInterval);
}
Kvaka je u tome da je profa vjerojatno mislio da se poslije prvog unosa od 10, mogu unositi i niže vrijednosti
lukavi neki profa, sigurno traži da se posije prvog unosa od 10 može unijeti npr 9, jer ako je danas zagrijalo, sutra možda bude kiša.
On traži sistem npr:
10, 9, 8, 10, 12, 15, 14, 20, 21, 27
E sad u tom intervalu traži da se izlista broj dana sa temperaturom većom ili jednako 10, i uz to traži prosječnu temperaturu CIJELOG intervala
I sve to u jednoj jedinoj do-while petlji
lukava profa, još da je žensko, pa da je pozdraviš
#include<stdio.h>
int main()
{
int brojDana = 0, cijeliInterval = 0, kontrolnaVarijabla = 0;
float dnevnaTemperatura = 0, suma = 0;
do
{
if(dnevnaTemperatura >= 10 && brojDana == 0)
{
kontrolnaVarijabla++;
}
if(kontrolnaVarijabla != 0)
{
cijeliInterval++;
suma += dnevnaTemperatura;
if(dnevnaTemperatura >= 10)
{
brojDana++;
}
}
printf("Unesi dnevnu temperaturu za %d. dan: ", cijeliInterval+1);
scanf("%f", &dnevnaTemperatura);
}while(dnevnaTemperatura <= 25);
printf("Broj dana sa dnevnom temperaturom 10-25: %d", brojDana);
printf("\nProsjecna temperatura u tom intervalu: %.2f", suma/cijeliInterval);
}
je žensko je (profesorica :D), ma al nema baš ona blage xD .. ona ima te zadatke isprintane s riješenjima s nekog cd-a pa pametuje :D :D la snađe se.. :D
Evo ti verzija bez kontrolne varijable (ona uvijek bode oči)
#include<stdio.h>
int main()
{
int brojDana = 0, cijeliInterval = 0;
float dnevnaTemperatura = 0, suma = 0;
do
{
if(dnevnaTemperatura >= 10 && brojDana == 0)
{
brojDana++; // ovaj uvjet onemoućuje da prvi upis bude manji od 10
}
if(brojDana != 0) // dakle čim se upiše prvi upis veći ili jednako 10 ovdje je vrijednost true
{ // i dalje se mogu upisivati sve vrijednostti manje od 25
cijeliInterval++; // povećava se vrijednost ukupnog intervala
suma += dnevnaTemperatura; // pribraja se suma za unesenu vrijednost
if(dnevnaTemperatura >= 10)
{
brojDana++; // varijabla broj dana se povećava jedino ako je temperatura >= 10
}
}
printf("Unesi dnevnu temperaturu za %d. dan: ", cijeliInterval+1);
scanf("%f", &dnevnaTemperatura); // unos nije slučajno na kraju petje, tim se dobija da
}while(dnevnaTemperatura <= 25); // petlja prekida čim je temperatura 25 ili više, bez da se ta vrijednost pribraja varjablama
printf("Broj dana sa dnevnom temperaturom 10-25: %d", brojDana-1); // broj dana sa temperaturom 10-25 umanjujemo za 1, jer smo u prvoj if naredbi imali inkrement "viška"
printf("\nProsjecna temperatura u tom intervalu: %.2f", suma/cijeliInterval); // prosjek se dobije da se podijeli suma temperature sa cijelim intervalom
}
Ovo ti nije uputno raditi. Recimo da ti onda profesor kaže da se temperature mogu unositi i u decimalnom obliku (recimo 25.5), onda ti program neće više funkcionirati ispravno - morat ćeš ići mijenjati granice. Znači, ako se kaže da je temperatura maksimalno 25, onda stavi uvjet <= 25, kao što je to Floki učinio. To što si napravio bi možda imalo smisla kad bi bilo u svrhu neke optimizacije - ali ovdje nema.
Ali ja radim s cijelim brojevima :P
Da su realni brojevi u pitanju onda bih to svakako uzeo u obzir.
Za svog skolovanja sam i sâm cesto uzimao takve mjere, i gotovo uvijek se radilo o cijelim brojevima. Ali da si u pravu - jesi. Da sam od pocetka radio sa realnim brojevima onda ni onaj casting u poslijednjem ispisu ne bi bio potreban. Recimo da ja to tako sâm sebe zabavljam jer su ovi zadatci uglavnom repetitivni i dosadni.
ajde puno hvala vima, na trudu i radu...sam ja nisam bio u šk kad su radili tu petlju i to pa ako nije nekom problem pokraj koda napisat što točno koji dio u ovom slučaju radi s čime.. TNX :D :D
ajde puno hvala vima, na trudu i radu...sam ja nisam bio u šk kad su radili tu petlju i to pa ako nije nekom problem pokraj koda napisat što točno koji dio u ovom slučaju radi s čime.. TNX :D :D
mada ne kužim poantu ovog zadatka, to bi svakako bilo efektnije i preglednije riješiti sa kombinacijom while + do-while
ograniči se prvi upis uvjetom koji se provlači kroz while petlju sve dok se ne upiše vrijednost >= 10, a u do-while petlji se upisuju
sve vrijednosti <= 25.
Poanta bi trebala biti u pisanju što jednostavnijeg i robusnijeg koda, a ne u izvođenju "egzibicija".
dakle, po mojim kriterijima, peticu bi dobio onaj tko bi napisao while + while za ovaj zadatak
nešto slično ovom:
#include<stdio.h>
int main()
{
int brojDana = 0, cijeliInterval = 1;
float dnevnaTemperatura = 0, suma = 0;
while(dnevnaTemperatura < 10)
{
printf("Unesi dnevnu temperaturu za %d. dan: ", cijeliInterval);
scanf("%f", &dnevnaTemperatura);
}
while(dnevnaTemperatura <= 25)
{
if(dnevnaTemperatura >= 10)
{
brojDana++;
}
suma += dnevnaTemperatura;
printf("Unesi dnevnu temperaturu za %d. dan: ", ++cijeliInterval);
scanf("%f", &dnevnaTemperatura);
}
printf("Broj dana sa dnevnom temperaturom 10-25: %d", brojDana);
printf("\nProsjecna temperatura u tom intervalu: %.2f", suma/cijeliInterval-1);
}
btw. otkrij zašto ovaj kod ne daje dobar rezultat.
Je li ima itko ideju kako iz unesenog niza naći koji broj se ponavlja najviše puta, odn. koji je najčešći broj.
Recimo, imam a[]={1,3,3,6,4,7,3,2}
i da ispiše 3.
Je li ima itko ideju kako iz unesenog niza naći koji broj se ponavlja najviše puta, odn. koji je najčešći broj.
Recimo, imam a[]={1,3,3,6,4,7,3,2}
i da ispiše 3.
Jedan od načina se nameće sam od sebe - da imaš matricu, u koju ćeš zabilježiti koji broj je u pitanju i koliko puta se ponavlja. Znači, imao bi u ovom slučaju:
broj, brojPojavljivanja
1, 1
3, 2
6, 1
4, 1
7, 1
3, 1
2, 1
Naravno, matrica je ispočetka prazna. Ideš element po element polja a i pogledaš nalazi li se taj broj u matrici - ako se nalazi, uvećaš mu broj pojavljivanja.
kad projekt buildam kao debug izvrsna datoteka zauzima 153 kb, a kad buildam kao release onda zauzima 63 kb. zašto je to tako? nije da mi smeta, nego me zanima :D
kad projekt buildam kao debug izvrsna datoteka zauzima 153 kb, a kad buildam kao release onda zauzima 63 kb. zašto je to tako? nije da mi smeta, nego me zanima :D
Razni debug markeri da bi debugger mogao efikasno raditi
Evo još jednog algoritma za izračun najčešćeg broja u nizu.
prednost u odnosu na matricu : ne traži dodatnu alokaciju
nedostatak : ukoliko imamo dva broja sa istim brojem ponavljanja izbacuje samo jednog - manjeg
(dakle - matrica ima prednost)
#include<stdio.h>
int main()
{
int polje[] = {1, 5, 19, 5, 9, 8, 4, 5, 19, 5};
int i, j, temp, brojElemenata, brojSaNajvisePonavljanja, brojPonavljanja = 0;
for( i=0; i<10; i++)
{
for( j=0; j<10-1; j++)
{
if(polje[j]>polje[j+1])
{
temp = polje[j+1];
polje[j+1] = polje[j];
polje[j] = temp;
}
}
}
temp = 0;
for(i=0; i<10-1; i+=temp)
{
brojElemenata = 1;
for(j=i; polje[j] == polje[j+1]; j++)
{
brojElemenata++;
}
if(brojElemenata > brojPonavljanja)
{
brojSaNajvisePonavljanja = polje[j];
brojPonavljanja = brojElemenata;
}
temp = brojElemenata;
}
printf("Broj sa najvise ponavljanja: %d", brojSaNajvisePonavljanja);
printf("\nBroj ponavljanja: %d", brojPonavljanja);
return 0;
}
Najprije se niz sort metodom poreda po veličini, a onda dvostrukom petljom nađe broj sa najviše ponavljanja.
Da li iko zna gdje mi je ovdje greška?
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
char ime1[80];
char ime2[80];
cout<<"Unesite ime ";
cin>>ime1;
strcpy(ime2,ime1);
cout<<"Drugi niz: "<<ime2<<endl;
char word[80];
int i,length;
cout<<"Upišite svoju riječ";
cin.get(word,80);
length=strlen(word);
for(i=length;i>=0;i++)
{
cout<<word[i];
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
U for petlji ide "i--" jer se smanjuje, pa ideš od dužine riječi do 0.