Hogy lehet ezt megcsinálni C-ben?
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.
#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;
}
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)
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.
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.
#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;
}
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.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!