11 svar
169 visningar
Samjanah behöver inte mer hjälp
Samjanah 10 – Fd. Medlem
Postad: 15 dec 2020 23:13

Skapa en radbrytning i en lista 10x10.

En av funktionerna i min kod ska skriva ut 100 st tal i en array. Men ska presenteras 10x10. En radbrytning måste sättas in i denna kod och jag vet inte hur jag ska göra detta?

Se nedan;

 

void skriv(int vektor[])
{

int i;
for (i=0;i<talfoljd;i++)
vektor[i]=(int)(rand()%900);
for(i=0;i<talfoljd;i++)

Lindehaven 820 – Lärare
Postad: 16 dec 2020 08:51
printf("\n");
Samjanah 10 – Fd. Medlem
Postad: 16 dec 2020 09:45

jo jag vet att man behöver printf(”\n). men det måste fattas något mer . och vart stoppar man in printf? jag har testat massor men det blir inte rätt.

Laguna 30471
Postad: 16 dec 2020 10:04

Hur ser din loop ut som skriver ut?

Samjanah 10 – Fd. Medlem
Postad: 16 dec 2020 10:59

int i;
for (i=0;i<talfoljd;i++)
vektor[i]=(int)(rand()%900);

for (i=0;i<talfoljd;i++)
printf("%d|", vektor[i]);
for(i=0;i==rader;i++)
printf("\n");

 

jag vet inte hur jag ska skriva den

jek7 35 – Fd. Medlem
Postad: 16 dec 2020 11:51

Antingen kan du kolla om du är på var tionde rad med modulus-operatorn, och då printa radbrytning.

Eller så kan du ha två loopar i varandra, där den yttre ökar 10 åt gången samt radbryter, och den inre lägger på 0-9 till detta och skriver talen.

Lindehaven 820 – Lärare
Postad: 16 dec 2020 12:04

Om du publicerar hela din kod här med "Infoga programmeringskod" så underlättar det för oss alla.

Laguna 30471
Postad: 16 dec 2020 12:32

Nånting sånt här alltså (ej testat):

for (i=0;i<talfoljd;i++) {
   printf("%d|", vektor[i]);
   if (i%10 == 0)
        print("\n");
}

Samjanah 10 – Fd. Medlem
Postad: 16 dec 2020 13:37
void skriv(int* vektor)
{
int i;
int j;
int tal[100];
do
{ 
for (i=0;i<rader;i++)
printf("%d|", tal[i]);
j++;
printf("\n");
}while (j<10);
}
int limit(int* vektor)
{ 
int i;
for (int i=0;i<talfoljd;i++)
vektor[i]=(rand()%talmax);

return *vektor;
Samjanah 10 – Fd. Medlem
Postad: 16 dec 2020 13:38

detta är en del av min programkod. nu blir det en radbrytning. men talen blir inte mellan 0-900 längre. jag ska alltså anropa funktioner. med en meny som jag har gjort i main. när jag väljer 1 ska 100 tal slumpas med värde 0-900. 

Laguna 30471
Postad: 16 dec 2020 14:35

Indentera koden, är du snäll. Det gör den mycket lättare att läsa.

Lindehaven 820 – Lärare
Postad: 16 dec 2020 14:57 Redigerad: 16 dec 2020 14:58

Mitt förslag är att undvika globala variabler (t ex rader och talfoljd). Använd indentering för att göra koden lättare att läsa (och avlusa). Kommentarer i koden nedan.

void skriv(int* vektor) /* Argumentet 'vektor' är bra men används inte i funktionen. */
{
	int i; /* Bör deklareras närmare där den används, dvs i for-loopen. */
	int j; /* Bör initieras till 0, annars bestämmer kompilatornn vad värdet blir. */
	int tal[100]; /* Lokal variabel 'tal' där alla 100 element får värdet från kompilatorn. */
	do
	{ 
		for (i=0;i<rader;i++) /* Global variabel 'rader', undvik! Kan läggas som argument istället. */
			printf("%d|", tal[i]); /* Kommer att skriva ut ett antal värden från BÖRJAN av 'tal'. */
		j++;
		printf("\n");
	} while (j<10);
}

int limit(int* vektor) /* Funktionen kan vara av typen 'void' istället för 'int'. */
{ 
	int i;
	for (i=0;i<talfoljd;i++) /* Global variabel 'talfoljd', undvik! Kan läggas som argument istället. */
		vektor[i]=(rand()%talmax); /* Global variabel 'talmax', undvik! Kan läggas som argument istället. */

	return *vektor; /* Pekaren är känd av anroparen så den behöver inte returneras. */
}
Svara
Close