Akad itt fent egy programozó emberke, akitől segítséget kérhetnék?
Arról lenne szó, hogy nem rég csináltam egy programot mely 1-10-ig felsorolja az összes számkombinációt, úgy hogy minden szám csak egyszer szerepelhet a számsorba és egy kombináció is csak egyszer szerepelhet, tehát nem lehetnek még egyszer ugyanazok a számok csak más sorrendben. Tudjátok, úgy mintha azt számolnánk ki hány lottó kombináció van.
A kérdésem az lenne, hogy ezt a programot hogy tudnám továbbfejleszteni úgy, hogy minden sorozat mellé egyesekből és kettesekből álló sort ír a következő képpen:
ha a sorozat tartalmaz 6-ost, vagy 7-est akkor oda ketteseket ír, különben egyeseket.
pl:
1,2,3,4,5 itt a sorozat és ezt írja mellé: 1,1,1,1,1 (mivel itt nincs 6-os, vagy 7-es), de ide már ezt írja
1,2,3,4,6 ------> 1,1,1,1,2, majd a végén az 1-es 2-eseket összeadja:
1,2,3,4,6 ------> 1,1,1,1,2 ------->6
Tehát leír két számsort plusz még az utolsó összegét is.
Remélem értelmesen letudtam írni. És köszönöm a segítséget annak aki nem túl fáradt ehhez:)
Egy lényegeset elfelejtettem. Ha lehet akkor C nyelven légyszíves mert én csak úgy tudok programozni. És itt van amit eddig alkottam:
int main()
{
FILE *f;
int i=1,j=1,k=1,l=1,m=1;
f=fopen("szamok.txt","w");
while (i<=10)
{
while(j<=10)
{
if (j==i)
{
j++;
k=j;
continue;
}
while(k<=10)
{
if (k==i || k==j)
{
k++;
l=k;
continue;
}
while(l<=10)
{
if (l==k || l==j || l==i)
{
l++;
m=l;
continue;
}
while(m<=10)
{
if(m==l || m==k || m==j || m==i)
{
m++;
continue;
}
fprintf(f,"%i;%i;%i;%i;%i",i,j,k,l,m);
fprintf(f,"\n");
m++;
}
l++;
m=l;
}
k++;
l=k;
}
j++;
k=j;
}
i++;
j=i;
}
return 0;
}
A program elé még ezt is be lehet írni:
#include <stdio.h>
#include <stdio.h>
Ha a számokat egy ötelemű tömbben tárolod, akkor talán legegyszerűbb, ha egy másik tömböt csinálsz, amit feltöltesz attól függően, mi van az első tömbben. Legjobb lenne az első tömb feltöltésekor rögtön a másikat is kitölteni, és utána az összeghez csak a második tömbön kell végigszaladni a kiiratás után.
ciklus a kombinációkra, x=0..1000
ciklus a számokra, i=0..4
tömb1[i]=véletlenszám
ha tömb1[i]=6 vagy tömb1[i]=7 akkor
tömb2[i]=2
egyébként
tömb2[i]=1
ciklus vége
ciklus i=0..4: tömb1[i] kiiratás
ciklus i=0..4: tömb2[i] kiiratás és rögtön összegzés
összeg kiiratás
ciklus vége
@15:38-as hozzászóló azt írta hogy tömbbe tárold. Te meg egészen mást. Úgy tűnik azt sem tudod mi a tömb.
Egyébként a kódba elég sok önhasonló kódrészlet van. Ez az egyik az ami kerülendő programozás során.
A te kódodnál maradva íme tömbbel:
#include <stdio.h>
#include <stdio.h>
int main()
{
FILE *f;
int i;
int t[5];
for (i=0;i<5;i++){t[i]=1;}
f=fopen("szamok.txt","w");
while (t[0]<=10)
{
while(t[1]<=10)
{
if (t[1]==t[0])
{
t[1]++;
t[2]=t[1];
continue;
}
while(t[2]<=10)
{
if (t[2]==t[0] || t[2]==t[1])
{
t[2]++;
t[3]=t[2];
continue;
}
while(t[3]<=10)
{
if (t[3]==t[2] || t[3]==t[1] || t[3]==t[0])
{
t[3]++;
t[4]=t[3];
continue;
}
while(t[4]<=10)
{
if(t[4]==t[3] || t[4]==t[2] || t[4]==t[1] || t[4]==t[0])
{
t[4]++;
continue;
}
/*szamok kiirasa*/
for (i=0;i<5;i++){
fprintf(f,"%d",t[i]);
if (i<4){fprintf(f,";");}
};
fprintf(f," ------> ");
/*szamok fuggvenyeben 1-es vagy 2-es kiratas*/
for (i=0;i<5;i++){
fprintf(f,"%d", (t[i]==6)||(t[i]==7) ? 2 : 1);
if (i<4){fprintf(f,";");}
};
fprintf(f,"\n");
t[4]++;
}
t[3]++;
t[4]=t[3];
}
t[2]++;
t[3]=t[2];
}
t[1]++;
t[2]=t[1];
}
t[0]++;
t[1]=t[0];
}
return 0;
}
Egy tömböt használtam, az előttem szóló azt írta hogy 2-t használj, igazából 1-el is megoldható. Ha későbbi változatba az 1-es 2-esekből álló sorozattal is kell még valamit csinálni akkor érdemes lehet tömbbe tárolni már most is.
A kódba az összegzést kihagytam.
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!