Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
nana Forumaš(ica)


Pridružen/a: 29. 11. 2005. (12:24:35) Postovi: (2AD)16
Spol: 
|
Postano: 16:38 ned, 25. 6. 2006 Naslov: |
|
|
[quote="Anonymous"]Program ti ne radi sve kaj bi trebo. Ako više puta okreneš isti novčić on će ti registrirat ko da si ga okrenula jedanput. Ja sam napisao isti program ko i ti, samo kaj mogu više puta okrenuti isti novčić, al mi program općenito ne radi.[/quote]
onda na ovaj moj kod dodaj jos samo if petlju;
zapravo
[code:1]while (fscanf(ulaz,"%s %d",tmp,&a)==2){
if ((strcmp(tmp, "izbaci"))==0) p[a-1]='-';
if ((strcmp(tmp, "okreni"))==0){
if ((p[a-1])=='P') p[a-1]='G';
if((p[a-1])=='G') p[a-1]='P';
}
}
[/code:1]
Anonymous (napisa): | Program ti ne radi sve kaj bi trebo. Ako više puta okreneš isti novčić on će ti registrirat ko da si ga okrenula jedanput. Ja sam napisao isti program ko i ti, samo kaj mogu više puta okrenuti isti novčić, al mi program općenito ne radi. |
onda na ovaj moj kod dodaj jos samo if petlju;
zapravo
Kod: | while (fscanf(ulaz,"%s %d",tmp,&a)==2){
if ((strcmp(tmp, "izbaci"))==0) p[a-1]='-';
if ((strcmp(tmp, "okreni"))==0){
if ((p[a-1])=='P') p[a-1]='G';
if((p[a-1])=='G') p[a-1]='P';
}
}
|
_________________ Kad sam bila mala htjela sam biti statističarka
[tex]\omega \in \Omega[/tex] 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 16:56 ned, 25. 6. 2006 Naslov: |
|
|
[quote="Anonymous"]Ja sam napisao isti program ko i ti, samo kaj mogu više puta okrenuti isti novčić, al mi program općenito ne radi.[/quote]
Napisi svoje rjesenje (smjesti ga u [tt][code[i][/i]]...[/code][/tt] blok), pa cemo naci gdje je problem. ;)
Anonymous (napisa): | Ja sam napisao isti program ko i ti, samo kaj mogu više puta okrenuti isti novčić, al mi program općenito ne radi. |
Napisi svoje rjesenje (smjesti ga u [code]...[/code] blok), pa cemo naci gdje je problem.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
Gost
|
Postano: 17:01 ned, 25. 6. 2006 Naslov: |
|
|
[code:1]
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
FILE* f;
char ime[80],naredba[20];
int n,x,i;
char* a;
printf("ime datoteke : ");
scanf("%s",ime);
if((f=fopen(ime,"rt"))==NULL){
printf("Nemogu otvoriti datoteku!!!");
exit(-1);
}
fscanf(f,"%d",&n);
a=(char*)malloc(sizeof(char)*(n+1));
for(i=0;i<n;i++) a[i]='P';
a[n]='\0';
while(fscanf(f,"%s %d",naredba,&x)==2){
if ((strcmp(naredba,"izbaci"))==0) a[x-1]='-';
if (((strcmp(naredba,"okreni"))==0)){
if (a[x-1]=='P') a[x-1]='G';
if (a[x-1]=='G') a[x-1]='P';
}
}
printf("%s",a);
free(a);
fclose(f);
scanf("%%");
return 0;
}[/code:1]
Kod: |
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
FILE* f;
char ime[80],naredba[20];
int n,x,i;
char* a;
printf("ime datoteke : ");
scanf("%s",ime);
if((f=fopen(ime,"rt"))==NULL){
printf("Nemogu otvoriti datoteku!!!");
exit(-1);
}
fscanf(f,"%d",&n);
a=(char*)malloc(sizeof(char)*(n+1));
for(i=0;i<n;i++) a[i]='P';
a[n]='\0';
while(fscanf(f,"%s %d",naredba,&x)==2){
if ((strcmp(naredba,"izbaci"))==0) a[x-1]='-';
if (((strcmp(naredba,"okreni"))==0)){
if (a[x-1]=='P') a[x-1]='G';
if (a[x-1]=='G') a[x-1]='P';
}
}
printf("%s",a);
free(a);
fclose(f);
scanf("%%");
return 0;
} |
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 17:32 ned, 25. 6. 2006 Naslov: |
|
|
Greska ti je ovdje:
[code:1] if (a[x-1]=='P') a[x-1]='G';
if (a[x-1]=='G') a[x-1]='P';[/code:1]
Treba biti
[code:1] if (a[x-1]=='P') a[x-1]='G'; else
if (a[x-1]=='G') a[x-1]='P';[/code:1]
jer inace "okrenes" novcic na [tt]'G'[/tt] s prvim [tt]if()[/tt] i odmah ga, s drugim [tt]if()[/tt], vratis na [tt]'P'[/tt]. 8)
Kad radis na racunalu, lagan nacin za naci gresku je da ispisujes vrijednosti varijabli u svakom koraku:
[code:1] while(fscanf(f,"%s %d",naredba,&x)==2){
printf("%s %d => %s\n", naredba, x, a);
if ((strcmp(naredba,"izbaci"))==0) a[x-1]='-';
if ((strcmp(naredba,"okreni"))==0){
if (a[x-1]=='P') a[x-1]='G'; else
if (a[x-1]=='G') a[x-1]='P';
}
}[/code:1]
(dodah onaj [tt]print()[/tt]. :))
Greska ti je ovdje:
Kod: | if (a[x-1]=='P') a[x-1]='G';
if (a[x-1]=='G') a[x-1]='P'; |
Treba biti
Kod: | if (a[x-1]=='P') a[x-1]='G'; else
if (a[x-1]=='G') a[x-1]='P'; |
jer inace "okrenes" novcic na 'G' s prvim if() i odmah ga, s drugim if(), vratis na 'P'.
Kad radis na racunalu, lagan nacin za naci gresku je da ispisujes vrijednosti varijabli u svakom koraku:
Kod: | while(fscanf(f,"%s %d",naredba,&x)==2){
printf("%s %d => %s\n", naredba, x, a);
if ((strcmp(naredba,"izbaci"))==0) a[x-1]='-';
if ((strcmp(naredba,"okreni"))==0){
if (a[x-1]=='P') a[x-1]='G'; else
if (a[x-1]=='G') a[x-1]='P';
}
} |
(dodah onaj print(). )
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
suziQ Forumaš(ica)


Pridružen/a: 29. 05. 2005. (13:52:50) Postovi: (2B)16
Spol: 
|
Postano: 0:16 pon, 26. 6. 2006 Naslov: |
|
|
[quote="mdoko"] [code:1]include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int lucky_row(int** A, int i, int n);
int lucky_col(int** A, int j, int m);
int main(){
int** A = NULL;
int m, n;
int i, j;
int lucky_rows = 0;
int lucky_cols = 0;
puts("Unesi dimenzije matrice:");
scanf("%d", &m);
scanf("%d", &n);
/* alokacija memorije */
if(!(A = (int**) malloc(m * sizeof(int*)))){
fprintf(stderr, "Greska pri alokaciji memorije.\n");
exit(1);
}
for(i = 0; i < m; ++i){
if(!(A[i] = (int*) malloc(n * sizeof(int)))){
fprintf(stderr, "Greska pri alokaciji memorije.\n");
exit(1);
}
}
puts("Unesi elemente matrice {0|1}:");
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
scanf("%d", A[i]+j);
for(i = 0; i < m; ++i) if(lucky_row(A, i, n)) ++lucky_rows;
for(j = 0; j < n; ++j) if(lucky_col(A, j, m)) ++lucky_cols;
printf("Sretnih redaka: %d\nSretnih stupaca: %d\n", lucky_rows, lucky_cols);
/* oslobadjanje memorije */
for(i = 0; i < m; ++i) free(A[i]);
free(A);
return 0;
}
int lucky_row(int** A, int i, int n){ /* n - broj stupaca matrice A */
int z = A[i][0];
int j = 1;
while(j < n && A[i][j] == z) ++j; /* preskocimo sve z-ove */
while(j < n && A[i][j] != z) ++j; /* preskocimo sve razlicite od z */
return (j == n); /* da li smo dosli do kraja retka */
}
int lucky_col(int** A, int j, int m){ /* m - broj redaka matrice A */
int i;
for(i = 1; i < m; ++i) if(A[i][j]==A[i-1][j]) break; /* prolazimo kroz stupac dok god alternira */
return (i == m); /* da li smo dosli do kraja stupca */
}
[/code:1][/quote]
:o :wink: :wink: :PP
mdoko (napisa): | Kod: | include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int lucky_row(int** A, int i, int n);
int lucky_col(int** A, int j, int m);
int main(){
int** A = NULL;
int m, n;
int i, j;
int lucky_rows = 0;
int lucky_cols = 0;
puts("Unesi dimenzije matrice:");
scanf("%d", &m);
scanf("%d", &n);
/* alokacija memorije */
if(!(A = (int**) malloc(m * sizeof(int*)))){
fprintf(stderr, "Greska pri alokaciji memorije.\n");
exit(1);
}
for(i = 0; i < m; ++i){
if(!(A[i] = (int*) malloc(n * sizeof(int)))){
fprintf(stderr, "Greska pri alokaciji memorije.\n");
exit(1);
}
}
puts("Unesi elemente matrice {0|1}:");
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
scanf("%d", A[i]+j);
for(i = 0; i < m; ++i) if(lucky_row(A, i, n)) ++lucky_rows;
for(j = 0; j < n; ++j) if(lucky_col(A, j, m)) ++lucky_cols;
printf("Sretnih redaka: %d\nSretnih stupaca: %d\n", lucky_rows, lucky_cols);
/* oslobadjanje memorije */
for(i = 0; i < m; ++i) free(A[i]);
free(A);
return 0;
}
int lucky_row(int** A, int i, int n){ /* n - broj stupaca matrice A */
int z = A[i][0];
int j = 1;
while(j < n && A[i][j] == z) ++j; /* preskocimo sve z-ove */
while(j < n && A[i][j] != z) ++j; /* preskocimo sve razlicite od z */
return (j == n); /* da li smo dosli do kraja retka */
}
int lucky_col(int** A, int j, int m){ /* m - broj redaka matrice A */
int i;
for(i = 1; i < m; ++i) if(A[i][j]==A[i-1][j]) break; /* prolazimo kroz stupac dok god alternira */
return (i == m); /* da li smo dosli do kraja stupca */
}
|
|
_________________ I Got Feeling, Blues is gonna be my only way
Zadnja promjena: suziQ; 22:48 uto, 27. 6. 2006; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
Gost
|
Postano: 21:33 pon, 26. 6. 2006 Naslov: Problem s matricom!? |
|
|
Program bi trebao ucitavati brojeve m i n, te m*n matricu koja se sastoji od znakova. Neznam zašto mi ne ucitava matricu znak po znak.
[code:1]
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
void check(void* p)
{
if(p == NULL)
{
printf("Greska u alokaciji memorije!\n");
exit(1);
}
}
int main()
{
int i,j,n,m;
char **a;
printf("n=");
scanf("%d",&n);
printf("m=");
scanf("%d",&m);
a=(char**)malloc(n*sizeof(char*));check(a);
for(j=0;j<m;j++){a[j]=(char*)malloc(m*sizeof(char));check(a[j]);}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\na[%d][%d]=",i,j);
scanf("%c",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++)printf("[%c] ",a[i][j]);
}
for(j=0;j<m;j++)free(a[j]);
free(a);
return 0;
}
[/code:1]
Program bi trebao ucitavati brojeve m i n, te m*n matricu koja se sastoji od znakova. Neznam zašto mi ne ucitava matricu znak po znak.
Kod: |
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
void check(void* p)
{
if(p == NULL)
{
printf("Greska u alokaciji memorije!\n");
exit(1);
}
}
int main()
{
int i,j,n,m;
char **a;
printf("n=");
scanf("%d",&n);
printf("m=");
scanf("%d",&m);
a=(char**)malloc(n*sizeof(char*));check(a);
for(j=0;j<m;j++){a[j]=(char*)malloc(m*sizeof(char));check(a[j]);}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("\na[%d][%d]=",i,j);
scanf("%c",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++)printf("[%c] ",a[i][j]);
}
for(j=0;j<m;j++)free(a[j]);
free(a);
return 0;
}
|
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 0:03 uto, 27. 6. 2006 Naslov: |
|
|
Ako ucitavas znak po znak, onda ti svaki drugi [tt]scanf()[/tt] "pobere" [tt]ENTER[/tt], odnosno [tt]'\n'[/tt], zar ne? 8)
Ako ucitavas znak po znak, onda ti svaki drugi scanf() "pobere" ENTER, odnosno '\n', zar ne?
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:43 uto, 27. 6. 2006 Naslov: |
|
|
[quote="mdoko"][quote="vsego"]Ako ucitavas znak po znak, onda ti svaki drugi [tt]scanf()[/tt] "pobere" [tt]ENTER[/tt], odnosno [tt]'\n'[/tt], zar ne? 8)[/quote]
Rjesenje ovog problema je [url=http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html#fflush][tt]int fflush(FILE *stream)[/tt][/url].[/quote]
[tt]fflush()[/tt] nismo ucili, ali ponasanje [tt]scanf()[/tt]-a jesmo, pa bi jedan [tt]do { ... } while (c == '\n');[/tt] trebao pomoci. ;)
mdoko (napisa): | vsego (napisa): | Ako ucitavas znak po znak, onda ti svaki drugi scanf() "pobere" ENTER, odnosno '\n', zar ne?  |
Rjesenje ovog problema je int fflush(FILE *stream). |
fflush() nismo ucili, ali ponasanje scanf()-a jesmo, pa bi jedan do { ... } while (c == '\n'); trebao pomoci.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
|