Kezdőoldal » Számítástechnika » Programozás » Hogy lehet ezt megcsinálni C-ben?

Hogy lehet ezt megcsinálni C-ben?

Figyelt kérdés

A feladat lényege, hogy van egy txt fájl amiben 10 db 8 számból álló számkombináció van. a számok 1-től 5-ig vannak, tehát van olyan, hogy egy kombináción belül egy szám többször is előfordul.

A feladat megszámolni, hogy egy szám hányszor fordul elő az adott kombinációban (soronként).


A beolvasás megy. Csináltam egy kétdimenziós tömböt így:

int T[10][8], és a beolvasáskor egy for ciklussal beolvastam a számokat, de amikor a megszámlálást csinálnám akkor az első sort jól írja le, de a második sorban már hozzáadja az első sor eredményét is. Pl az első sorban van 4db 1-egy, a másodikban csak 1, de mégis azt írja ki hogy ott 5db 1-egy van. Na ezt hogy lehet kiküszöbölni? Köszönöm a segítséget. Itt van az eddigi kódom. Ebben nincs benne a megszámlálás.



2012. okt. 8. 19:26
1 2
 1/11 A kérdező kommentje:
Azt elfelejtettem mondani, hogy mindezt egy másik fájlba kell kiíratni, de az is menne.
2012. okt. 8. 19:28
 2/11 A kérdező kommentje:

#include<stdio.h>


int main(){


#define N 2


int i;


FILE* BE = fopen("be.txt", "r");

FILE* KI = fopen("ki.txt", "w");


int T[2][7];


for(i=0;i<N;i++){


//beolvasás

fscanf(BE, "%d;%d;%d;%d;%d;%d;%d", &T[i][0], &T[i][1], &T[i][2], &T[i][3], &T[i][4], &T[i][5], &T[i][6]);



//Kiíratás

fprintf(KI, "%d;%d;%d;%d%;%d;%d;%d\n", T[i][0], T[i][1], T[i][2], T[i][3], T[i][4], T[i][5], T[i][6]);


}



fclose(BE);

fclose(KI);

getch();

return 0;

}

2012. okt. 8. 19:29
 3/11 A kérdező kommentje:

Tehát van egy ilyen sor: 1,2,3,4,5,1,1,1

akkor amellé ezt kell hogy kiírja: 5,1,1,1,1

(5db egyes, 1db 2-es stb)

2012. okt. 8. 19:31
 4/11 A kérdező kommentje:
Bocs a forráskódomban rosszul van a tömb és az N és véletlenül eddig csak 7 szám van benne 8 helyett. ARR kapkodok sajnos.
2012. okt. 8. 19:32
 5/11 A kérdező kommentje:
Megpróbáltam úgy is, hogy a sorokat beraktam egy külön ciklusba. (Tehát minden sort egyesével megvizsgál, de valami mégsem jó.)
2012. okt. 8. 20:37
 6/11 iostream ***** válasza:

Esetleg. Talán. Ha. Mondjuk a RELEVÁNS részeit is bemásolhatnád a kódnak, nem csak azt, amiről te is mondtad, hogy megy, és el is hiszem látatlanban.


Kódot.

2012. okt. 8. 21:56
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:

Azért csak ennyit másoltam ide, mert ez megy a többi nem sikerült így fölösleges ide másolni a rosszat. Szerintem.

De tessék itt van a kód mindjárt bemásolom.

2012. okt. 9. 14:27
 8/11 A kérdező kommentje:

#include<stdio.h>


int main(){


#define N 10


int i, j;

int egyes, kettes, harmas, negyes, otos;


FILE* BE = fopen("be.txt", "r");

FILE* KI = fopen("ki.txt", "w");



int T[10][8];

egyes=0;

kettes=0;

harmas=0;

negyes=0;

otos=0;


for(i=0;i<N;i++){

//beolvasás

fscanf(BE, "%d;%d;%d;%d;%d;%d;%d;%d", &T[i][0], &T[i][1], &T[i][2], &T[i][3], &T[i][4], &T[i][5], &T[i][6], &T[i][7]);


for(j=0;j<8;j++){

if(T[i][0]==1 || T[i][1]==1 || T[i][2]==1 || T[i][3]==1 || T[i][4]==1 || T[i][5]==1 || T[i][6]==1 || T[i][7]==1){egyes++;}

if(T[i][0]==2 || T[i][1]==2 || T[i][2]==2 || T[i][3]==2 || T[i][4]==2 || T[i][5]==2 || T[i][6]==2 || T[i][7]==2){kettes++;}

if(T[i][0]==3 || T[i][1]==3 || T[i][2]==3 || T[i][3]==3 || T[i][4]==3 || T[i][5]==3 || T[i][6]==3 || T[i][7]==3){harmas++;}

if(T[i][0]==4 || T[i][1]==4 || T[i][2]==4 || T[i][3]==4 || T[i][4]==4 || T[i][5]==4 || T[i][6]==4 || T[i][7]==4){negyes++;}

if(T[i][0]==5 || T[i][1]==5 || T[i][2]==5 || T[i][3]==5 || T[i][4]==5 || T[i][5]==5 || T[i][6]==5 || T[i][7]==5){otos++;}

}


//Kiíratás

fprintf(KI, "%d;%d;%d;%d%;%d;%d;%d;%d---->%d,%d,%d,%d,%d\n", T[i][0], T[i][3], T[i][2], T[i][3], T[i][4], T[i][5], T[i][6], T[i][7], egyes, kettes, harmas, negyes, otos);


}



fclose(BE);

fclose(KI);

getch();

return 0;

}

2012. okt. 9. 14:43
 9/11 A kérdező kommentje:

Tessék beírtam, de nem működik. egyszerűen hülyeségeket ír ki. Az i-s ciklussal lépked a sortól sorig, míg a j-s ciklus lépked a sorban. Itt a j-c ciklussal lehet baj, mert

rosszul számolja össze a számokat.

2012. okt. 9. 14:46
 10/11 iostream ***** válasza:

Hejj de csúnya. Próbáld ki, hogy ezt:


egyes=0;

kettes=0;

harmas=0;

negyes=0;

otos=0;


Az i-s cikluson belülre rakod.

2012. okt. 9. 16:15
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!