Pa može. Ja bi to polje skeniral dva po dva i u jednu varijablu upisival razliku, ali apsolutnu vrijednost i onda radio usporedbu, svaka koja je veća upisati u varijablu, ako nije veća nastaviti dalje. To možeš ili sam napraviti ili koristiti gotovu f-ju abs().
e sad ovo...
Program treba ucitati vrijednosti MIN,MAX i N [min,max,N];
ispisuje prvih N prostih brojeva iz intervala [MIN;MAX] -> [1 ; 1 000 000];
zašto ovo ne radi kako treba?
#include <stdio.h>
#define MIN 0
#define MIN_B 1
#define MAX 1000000
int main(){
long long min, max, N, i, j;
int br=0;
printf("Upisite gornju granicu u intervalu [%d, %d]: ",MIN_B,MAX);
scanf("%lld",&max);
while (max<MIN_B && max>MAX){
printf("\nPonovite unos\n");
scanf("%lld", &max);
}
printf("Upisite donju granicu u intervalu [%d, %d]: ",MIN,max);
scanf("%lld",&min);
while (min<MIN_B && min>max){
printf("\nPonovite unos\n");
scanf("%lld", &min);
}
printf("Koliko prim brojeva zelite ispisati: ", N);
scanf("%d",&N);
for(i=min; i<=max; i++) {
j=2;
while(i%j!=0 && j<i)
j++;
if(j==i && br<N){
printf("%4d ",i);
br++;
}
}
getchar();
return 0;
}
e sad ovo...
Program treba ucitati vrijednosti MIN,MAX i N [min,max,N];
ispisuje prvih N prostih brojeva iz intervala [MIN;MAX] -> [1 ; 1 000 000];
zašto ovo ne radi kako treba?
Prvo izračunaj prim brojeve i spremi ih u niz, te zatim ispiši poruku na ekranu da je pronađeno "x" prim brojeva i da korisnik unese koliko ih želi ispisati.
Zbog toga što ti je varijabla N deklarirana kao long long, a u scanf-u ti tražiš input običnog integera. Stavi modifier l (malo L), tj. dva mala l (long long) kod tog scanf-a (kad tražiš input N varijable), dakle ovako nešto:
printf("Koliko prim brojeva zelite ispisati: ", N);
scanf("%lld", &N);
EDIT: Htio sam ti još reći, kod prijašnjeg zadatka, koristi abs() (za integere), ne fabs(), jer fabs() je za izračunavanje aps vrijednosti floating point brojeva.
Radim već par dana jednom programu. Dans sam ga dovršio i ispravio neke greške, no međutim, program mi ne radi baš onako kako sam zamislio.
Program bi trebao spremati nešto u neformatiranu daoteku te tražiti nšeto iz nje ili sve ispisivati. Problem je u tome što je program kada jednom uđe u petlju nezaustvljiv, tj. ispisivanje se vrti u beskonačnost, a trženje ne funkcionira uopće. Trebam neki način da to riješim-razmišljao sam da ispisivanje riješim pomoću nekog brojača koji zna koliko podataka ima u datoteci, no ne znam kako da to napravim.
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char musterija[40];
char brtel[15];
char vrstaur[20];
char markaur[20];
char modelur[20];
char opiskvara[50];
char komentar[50];
char status[40];
char datum[15];
char preuzeo[40];
}servis;
void pisanje();
void pretraga();
void ispisisve();
int main()
{
servis s;
int izbor;
printf("\n Servisna baza v1.0\n");
printf(" by Pranja\n\n");
ponovi:
printf("Odaberite jednu od ponudenih radnji:\n");
printf("\n1-pisanje u bazu\n");
printf("2-pretraga baze\n");
printf("3-ispis cijele baze\n");
printf("4-izlaz iz programa\n\n");
scanf("%d",&izbor);
fflush(stdin);
if(izbor==1){pisanje();}
if(izbor==2){pretraga();}
if(izbor==3){ispisisve();}
if(izbor==4){goto izlaz;}
izlaz:
system("PAUSE");
return 0;
}
void pisanje()
{
servis s;
FILE *fh;
fh=fopen("servis.dat","ab");
printf("\n Unesite prezime i ime musterije:\n\n");
gets(s.musterija);
fflush(stdin);
fputs(s.musterija,fh);
printf("\n Unesite broj telefona musterije:\n\n");
gets(s.brtel);
fflush(stdin);
fprintf(fh,"\n\n");
fputs(s.brtel,fh);
printf("\n Unesite vrstu, marku i model uredaja:\n\n");
scanf(" %s %s %s",&s.vrstaur, &s.markaur, &s.modelur);
fflush(stdin);
fprintf(fh,"\n%s\n",s.vrstaur);
fprintf(fh,"\n%s\n",s.markaur);
fprintf(fh,"\n%s\n",s.modelur);
printf("\n Unesite opis kvara:\n\n");
gets(s.opiskvara);
fflush(stdin);
fprintf(fh,"\n\n");
fputs(s.opiskvara,fh);
printf("\n Unesite komentar:\n\n");
gets(s.komentar);
fflush(stdin);
fprintf(fh,"\n\n");
fputs(s.komentar,fh);
printf("\n Unesite status uredaja:\n\n");
gets(s.status);
fflush(stdin);
fprintf(fh,"\n\n");
fputs(s.status,fh);
printf("\n Unesite datum:\n\n");
scanf("%s",&s.datum);
fflush(stdin);
fprintf(fh,"\n%s\n",s.datum);
printf("\n Unesite ime i prezime zaprimatelja zaprimatelja:\n\n");
gets(s.preuzeo);
fflush(stdin);
fprintf(fh,"\n\n");
fputs(s.preuzeo,fh);
fprintf(fh,"\n\n");
printf("\n\n Unijeli ste: %s %s %s %s %s %s %s %s %s %s.\n\n" ,s.musterija,s.brtel, s.vrstaur, s.markaur,s.modelur,
s.opiskvara ,s.komentar,s.status,s.datum,s.preuzeo);
fclose(fh);
}
void pretraga()
{
FILE *fp;
servis s;
int a;
char musterija[40];
char vrstaur[20];
char markaur[20];
char modelur[20];
char datum[15];
fp=fopen("servis.dat","rb");
printf("\n\n Odaberite kriterij pretrazivanja:\n\n");
printf("1-ime i prezime musterije\n");
printf("2-vrsta, marka i model uredaja\n");
printf("3-datum zaprimanja\n\n");
scanf("%d",&a);
fflush(stdin);
if(a==1){
printf("\n\n Unesite ime i prezime trazene musterije.\n\n");
gets(musterija);
fflush(stdin);
do{
fgets(s.musterija,40,fp);
fgets(s.brtel,15,fp);
fgets(s.vrstaur,20,fp);
fgets(s.markaur,20,fp);
fgets(s.modelur,20,fp);
fgets(s.opiskvara,50,fp);
fgets(s.komentar,50,fp);
fgets(s.status,40,fp);
fgets(s.datum,15,fp);
fgets(s.preuzeo,40,fp);
if(s.musterija==musterija){printf("\n\n Pronadeno je: %s %s %s %s %s %s %s %s %s %s.\n\n" ,s.musterija,s.brtel,s.vrstaur,s.markaur,s.modelur,
s.opiskvara,s.komentar,s.status,s.datum,s.preuzeo);
}else{printf("\n\n Nije pronadeno. \n\n");}
}while(s.musterija!=musterija);
}
if(a==2){
printf("\n\n Unesite vrstu trazenog uredaja.\n\n");
gets(vrstaur);
printf("\n\n Unesite marku trazenog uredaja.\n\n");
gets(markaur);
printf("\n\n Unesite model trazenog uredaja.\n\n");
gets(modelur);
do{
fgets(s.musterija,40,fp);
fgets(s.brtel,15,fp);
fgets(s.vrstaur,20,fp);
fgets(s.markaur,20,fp);
fgets(s.modelur,20,fp);
fgets(s.opiskvara,50,fp);
fgets(s.komentar,50,fp);
fgets(s.status,40,fp);
fgets(s.datum,15,fp);
fgets(s.preuzeo,40,fp);
if((s.vrstaur==vrstaur)&&(s.markaur==markaur)&&(s.modelur==modelur)){printf("\n\n Pronadeno je: %s %s %s %s %s %s %s %s %s %s.\n\n" ,s.musterija,s.brtel, s.vrstaur, s.markaur,
s.modelur,s.opiskvara ,s.komentar,s.status,s.datum,s.preuzeo);}
}while((s.vrstaur!=vrstaur)||(s.markaur!=markaur)||(s.modelur!=modelur));
}
if(a==3){
printf("\n\n Unesite trazeni datum.\n\n");
gets(datum);
do{
fgets(s.musterija,40,fp);
fgets(s.brtel,15,fp);
fgets(s.vrstaur,20,fp);
fgets(s.markaur,20,fp);
fgets(s.modelur,20,fp);
fgets(s.opiskvara,50,fp);
fgets(s.komentar,50,fp);
fgets(s.status,40,fp);
fgets(s.datum,15,fp);
fgets(s.preuzeo,40,fp);
if(s.datum==datum){printf("\n\n Pronadeno je: %s %s %s %s %s %s %s %s %s %s.\n\n" ,s.musterija,s.brtel, s.vrstaur, s.markaur,s.modelur,s.opiskvara,
s.komentar,s.status,s.datum,s.preuzeo);}
}while(s.datum!=datum);
}
fclose(fp);
}
void ispisisve()
{
servis s;
FILE *fg;
fg=fopen("servis.dat","rb");
do{
fgets(s.musterija,40,fg);
fgets(s.brtel,15,fg);
fgets(s.vrstaur,20,fg);
fgets(s.markaur,20,fg);
fgets(s.modelur,20,fg);
fgets(s.opiskvara,50,fg);
fgets(s.komentar,50,fg);
fgets(s.status,40,fg);
fgets(s.datum,15,fg);
fgets(s.preuzeo,40,fg);
if(fg!=NULL){printf("\n\n Zapis: %s %s %s %s %s %s %s %s %s %s.\n\n" ,s.musterija,s.brtel, s.vrstaur, s.markaur,s.modelur,s.opiskvara,
s.komentar,s.status,s.datum,s.preuzeo);}
}while(fg!=NULL);
printf("\n END OF LINE \n\n");
}
Zbog toga što ti je varijabla N deklarirana kao long long, a u scanf-u ti tražiš input običnog integera. Stavi modifier l (malo L), tj. dva mala l (long long) kod tog scanf-a (kad tražiš input N varijable), dakle ovako nešto:
printf("Koliko prim brojeva zelite ispisati: ", N);
scanf("%lld", &N);
EDIT: Htio sam ti još reći, kod prijašnjeg zadatka, koristi abs() (za integere), ne fabs(), jer fabs() je za izračunavanje aps vrijednosti floating point brojeva.
aaaa, pa da, kako mi je to promaklo?
i hvala za ovo drugo, sad idem taj rješit
(...)
Problem je u tome što je program kada jednom uđe u petlju nezaustvljiv, tj. ispisivanje se vrti u beskonačnost, a trženje ne funkcionira uopće.
(...)
typedef struct{
char musterija[40];
char brtel[15];
char vrstaur[20];
char markaur[20];
char modelur[20];
char opiskvara[50];
char komentar[50];
char status[40];
char datum[15];
char preuzeo[40];
}servis;
(...)
void pretraga()
(...)
char musterija[40];
(...)
do {
}while(s.musterija!=musterija);
(...)
}
Stringovi (znakovni nizovi) se uspoređuju funkcijom strcmp:
#include <string.h>
int strcmp( const char *str1, const char *str2 );
Funkcija vraća 0 ako su nizovi jednaki, a broj manji ili veći od nule ovisno o tome koji je niz veći - uspoređuje se po abecedi.
EDIT: s.musterija!=musterija uspoređuje adrese u memoriji, a budući da u tvom programu nikada neće biti jednake, petlja je beskonačna.
Stringovi (znakovni nizovi) se uspoređuju funkcijom strcmp:
#include <string.h>
int strcmp( const char *str1, const char *str2 );
Funkcija vraća 0 ako su nizovi jednaki, a broj manji ili veći od nule ovisno o tome koji je niz veći - uspoređuje se po abecedi.
EDIT: s.musterija!=musterija uspoređuje adrese u memoriji, a budući da u tvom programu nikada neće biti jednake, petlja je beskonačna.
Kako da sad to napišem?
i=strcmp(s.musterija,musterija);
if(i???0){
}while(i???0);
Prvo izračunaj prim brojeve i spremi ih u niz, te zatim ispiši poruku na ekranu da je pronađeno "x" prim brojeva i da korisnik unese koliko ih želi ispisati.
ovako sam to riješio:
#include <stdio.h>
#define MIN 0
#define MIN_B 1
#define MAX 1000000
int main(){
long long min, max, i, j;
int N, br=0;
printf("Upisite gornju granicu u intervalu [%d, %d]: ",MIN_B,MAX);
scanf("%lld",&max);
while (max<MIN_B && max>MAX){
printf("\nPonovite unos\n");
scanf("%lld", &max);
}
printf("Upisite donju granicu u intervalu [%d, %d]: ",MIN,max);
scanf("%lld",&min);
while (min<MIN_B && min>max){
printf("\nPonovite unos\n");
scanf("%lld", &min);
}
printf("Koliko prim brojeva zelite ispisati (0 za sve): ");
scanf("%d",&N);
printf("\n");
for(i=min; i<=max; i++) {
j=2;
while(i%j!=0 && j<i)
j++;
if(j==i && N==0)
printf("%4d ",i);
else if(j==i && br<N){
printf("%4d ",i);
br++;
}
}
getch();
return 0;
}
EDIT: Htio sam ti još reći, kod prijašnjeg zadatka, koristi abs() (za integere), ne fabs(), jer fabs() je za izračunavanje aps vrijednosti floating point brojeva.
a evo kako sam i ovo napravio
#include <stdio.h>
#include <math.h>
int main () {
int polje[20], i, elem, N, razl, maxrazl=1;
do{
printf("Unesi broj elemenata polja: ");
scanf("%d", &N);
} while (N>20);
for(i=0; i<N; i++){
printf("Unesi element za polje[%d]: ", i);
scanf("%d", &polje[i]);
}
maxrazl = abs(polje[1]-polje[0]);
elem = 1;
for(i=2; i<N; i++){
razl = abs(polje[i]-polje[i-1]);
if (razl>maxrazl){
maxrazl=razl;
elem=i;
}
}
printf("\nDva susjedna broja koja daju najvecu razliku su polje[%d] i polje[%d]\n", elem-1, elem);
printf("\nTo su brojevi %d i %d, a razlika je %d", polje[elem-1], polje[elem], maxrazl);
getch();
return 0;
}
glavno da sad sve radi kak treba :D
Stringovi (znakovni nizovi) se uspoređuju funkcijom strcmp:
#include <string.h>
int strcmp( const char *str1, const char *str2 );
Funkcija vraća 0 ako su nizovi jednaki, a broj manji ili veći od nule ovisno o tome koji je niz veći - uspoređuje se po abecedi.
EDIT: s.musterija!=musterija uspoređuje adrese u memoriji, a budući da u tvom programu nikada neće biti jednake, petlja je beskonačna.
Kako da sad to napišem?
i=strcmp(s.musterija,musterija);
if(i???0){
}while(i???0);
ako je s1<s2 onda je strcmp(s1,s2)<0
ako je s1==s2 onda je strcpm(s1,s2)=0
ako je s1>s2 onda je strcmp(s1,s2)>0
ponovno upućujem na skriptu, strana 89 za ovo sa strcmp
i=strcmp(s.musterija,musterija);
if(i???0){
}while(i???0);
if(!strcmp(s.musterija,musterija)) { // s.musterija == musterija
} while (strcmp(s.musterija,musterija)) // s.musterija != musterija
mo reč šta navalja u ovom kodu
#include "stdafx.h"
#include <stdio.h>
main ()
{
float r;
float pi=3.14;
float p;
printf ("Ovim programom cemo izracunati povrsinu kugle");
printf ("\nUpisi polumjer kugle, r= ");
scanf ("%f", &r);
p=4*pi*r*r;
printf ("\nPovrsina kugle iznosi");
scanf ("%f", &p);
getch();
}
mo reč šta navalja u ovom kodu
#include <stdafx.h>
#include <stdio.h>
float pi=3.14;
main ()
{
float r;
float p;
printf ("Ovim programom cemo izracunati povrsinu kugle");
printf ("\nUpisi polumjer kugle, r= ");
scanf ("%f", &r);
p=4*pi*r*r;
printf ("\nPovrsina kugle iznosi");
printf ("%f", p);
getch();
}
Evo-ispravio sam ti.
Imam jedan zadatak koji ne znam rješiti a glasi ovako:
Napravite program koji će za unesene cijele brojeve a ,x izračunati i ispisati a na potenciju x, bez korištenja funkcije pow.
ja sam krenuo al sam zapeo na potenciranju pa sad tražim pomoć ako neko zna, evo koda
#include <stdio.h>
#include <math.h>
void main()
{
int a;
int x;
int b;
printf("\n Upisi broj: ");
scanf("%d", &a);
printf("\n Upisi potenciju: \nx= ");
scanf("%d", &x);
b=ax;
printf("\n a na potenciju x jednako je: %d",a^x);
}
Bez funckije pow to rješavaš pomoću for petlje:
npr:
a^2 = a*a
a^3 = a*a*a
...
a^x = a*a*a*....*a (ukupno x-puta):
Dakle:
int i;
long b = 1;
for(i = 0; i < x; i++) b *= (long) a;
i u printf-u koristi %ld, posto je b tipa long :D
(long ti je jer potenciranje raste eksponencijalno, tj. "vrlo vrlo brzo" :D)
Imam jedan zadatak koji ne znam rješiti a glasi ovako:
Napravite program koji će za unesene cijele brojeve a ,x izračunati i ispisati a na potenciju x, bez korištenja funkcije pow.
Potenciranje je mnozenje sa samim sobom:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, x, b, n;
printf("\nUpisi broj: ");
scanf("%d", &a);
printf("\nUpisi potenciju: \nx= ");
scanf("%d", &x);
b=a;
if (x==0)
a=1;
else
for (n=1; n<x; n++)
a*=b;
printf("\n %d na potenciju %d jednako je: %d\n", b, x, a);
system("pause");
return 0;
}
opet ne kužim, možeš li to dodat u moj kod
Imam jedan zadatak koji ne znam rješiti a glasi ovako:
Napravite program koji će za unesene cijele brojeve a ,x izračunati i ispisati a na potenciju x, bez korištenja funkcije pow.
Potenciranje je mnozenje sa samim sobom:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, x, b, n;
printf("\nUpisi broj: ");
scanf("%d", &a);
printf("\nUpisi potenciju: \nx= ");
scanf("%d", &x);
b=a;
if (x==0)
a=1;
else
for (n=1; n<x; n++)
a*=b;
printf("\n %d na potenciju %d jednako je: %d\n", b, x, a);
system("pause");
return 0;
}
ne radi mi
ne radi mi
Sto ti ne radi? Meni radi...
promjenio sam nešto i sam radi, hvala na odgovorima
ne radi mi
Sto ti ne radi? Meni radi...
ja koristim Borland Turbo c++ 4.5 program a ti
Skini si Dev C++ ili Code Blocks.
ne radi mi
Sto ti ne radi? Meni radi...
ja koristim Borland Turbo c++ 4.5 program a ti
DevCPP :S
Pa popravi greske koje ti compiler javi...
Koje ti uopce greske javlja?
probaj ukloniti system("pause");
DevCpp je već prastari, niti se ne sjećam kad je zadnja verzija izašla :D.
Code::Blocks ;)
Zašto mi ovde ne radi GOTO????
#include<stdio.h>
#include<conio.h>
int a,b,c,d,e;
main()
{
upis:scanf("%d",&a);
if(a<100&&a>1000)
goto upis;
b=a;
for(c=1;c<=3;c++)
{
d=a%10;
if(d%2==0)
e=1;
a=a/10;
}
if(e==1)
printf("Ima parnu znamenku"); //u programu nije zadano šta triba u suprotnom...
getch();
}
Zato kaj ne postoji broj koji je manji od 100 i veći od 1000.
Uostalom umjesto goto() je bolje koristiti pravu petlju. Kod je čitljiviji i manje zapetljan.
upis:scanf("%d",&a);
if(a<100&&a>1000)
goto upis;
Koristi do-while umjesto goto. Pravilno korišten goto nikad ne skače unatrag.
Zašto mi ovde ne radi GOTO????
#include<stdio.h>
#include<conio.h>
int a,b,c,d,e;
main()
{
upis:scanf("%d",&a);
if(a<100&&a>1000)
goto upis;
b=a;
for(c=1;c<=3;c++)
{
d=a%10;
if(d%2==0)
e=1;
a=a/10;
}
if(e==1)
printf("Ima parnu znamenku"); //u programu nije zadano šta triba u suprotnom...
getch();
}
zato što bi umjeto && trebalo ići ||
ali najpravilnije je preko do-while petlje
do {
scanf("%d", &a);
} while (a<100 || a>1000)
Evo, ovaj ispisuje vrijeme od kad je upaljen (koliko je prošlo)...
#include<stdio.h>
#include<conio.h>
#include<sys\timeb.h>
#include<iostream>
struct timeb t_start, t_current;
int vr,a,b,c,d,e;
main()
{
system("Vrijeme");
int t_diff,t;
char c;
ftime(&t_start);
do
{
if(a!=t)
{
a=t;
system("CLS");
printf("%d(sec)%d(min)%d(sat)%d(dan)",b,c,d,e);
b++;
}
t=t_diff/1000;
if(b==60)//b=sec
{b=0;
c++;}
if(c==60)//c=min
{c=0;
d++;}
if(d==60)//d=sat
{d=0;
e++;}//e=dan
ftime(&t_current);
t_diff = (int) (1000.0 * (t_current.time - t_start.time)
+ (t_current.millitm - t_start.millitm));
}
while(t_diff<60000000);
getch();
}
MOže samo malo pomoći (što se ovoga tiče to radi super...)
htio bi da se upali minimiziran i to u tray(ako je to moguće)
i još nešto, htio bi da svaki put prije nego što se zatvori u neku posebnu txt datoteku upiše sljedeće;
Trenutni_datum ono što ispisiva na ekranu (("%d(sec)%d(min)%d(sat)%d(dan)",b,c,d,e)) (to sa datotekama još nismo učili pa ne znam...)
recimo: 22/02/2011 9(sec)55(min)7(sat)1(dan)
Nisam ni ja učio još datoteke, ali probat ću riješit.
3. sam razred, ali probaj ovo moje rješenje. Čisto da vidim je li radi.
FILE * datoteka;
datoteka = fopen ( "vrijeme.txt" , "a" );
fprintf (datoteka, "Vrijeme je "%d(sec)%d(min)%d(sat)%d(dan)",b,c,d,e);
fclose (datoteka);
Ne znam da li koristit fwrite ili fprintf jer još nisam učio to?