Een array invullen en vervolgens op het scherm presenteren

Status
Niet open voor verdere reacties.

BarryH

Gebruiker
Lid geworden
9 okt 2006
Berichten
14
Hallo, ik loop een beetje vast met hetvolgende:

Ik wil een array vullen met data, en zodra ik een negatief getal invul moet hij de waarde van de voorgaande positieve getallen op het scherm presenterenen, maar helaas loop ik iedere keer vast misschien dat jullie me een hint kunnen geven??
Voorlopig heb ik dit gemaakt, maar dit loopt vast zodra ik een negatief getal invul

dit is wat ik tot nu toe geknutseld heb

/*------------------------------------------------------------------------------
Doel : De invoer voor een programma is een reeks integers afgesloten met een
negatief getal. Bepaal of de getallenreeks een palindroom is, dwz
achterstevoren gelezen hetzelfde is als normaal gelezen.
---------------------------------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int data [] ={};
int a, b=0, c, d, i;

for (b=0; d=1 ;b++)
{ //start for loop
if (a>=0) // als a groter of gelijk is aan 0 start dan if loop
{ //start if loop
c=(b+1); //teller stappen
c=b; //tussenwaarde c stappen
printf("geef een getal : "); //vul een waarde in
scanf("%d", &a); //in te vullen waarde
printf("stap %d", b); //laat stap op het scherm zien
printf("\n\n"); //sla een regel over
data=a; //zet de waarde van a op de locatie van waarde b in de array
}
else
{
d=1; //maak d waarde 1 en stop de for loop
}
}
for (i=0; i<b ;i++) //laat het aantal waarden b zien in de array
{
printf("%d", data); //zet de waarde van de array op het scherm
}
system("PAUSE");
return 0;

}
 
Ik heb het in C geprogrammeerd met het programma Dev-C++
int data [] ={}; => kan dit wel? mijn compiler doet het in ieder geval niet
dit mag je toch zo invoeren?, het is de bedoeling dat de array leeg is en ik er zelf data in ga zetten, maar ik kom op dit moment niet goed uit m'n for loop:confused:
 
Ik wordt ook een beetje bang van die arraydeclaratie , maar dat zijn zorgen voor later :)

Wat je probleem is met je for-loop:

Code:
for (b=0; d=1 ;b++)

De 2e parameter is een toewijzing geen vergelijking, ik denk dat je d==1 (is gelijk aan) bedoeld. Dan zou de for-loop stoppen zodra d geen 1 meer is.
Wat je nu zegt is d WORDT 1, dus zal je prog in de loop blijven zitten zolang de toewijzing van 1 aan d lukt (wat altijd is) => while(1) loop.

gr Niek
 
Hallo Niek,

Bedankt mijn for loop doet het nu goed :thumb: , verder krijg ik het nu dus ook voor elkaar om de waarde in de array weg te schrijven, alleen krijg ik het nu nog niet voor elkaar om het aantal in de array ingevoerde getallen weer te geven op m'n scherm mbv m'n stappenteller b, hiermee moet ik nu toch een soort van loopje kunnen creëren waarmee ik het aantal weer te geven velden automatisch van deze stappen teller over kan nemen ipv deze regel in te hoeven voeren printf("%d%d%d%d%d", data[0], data[1], data[2], data[3], data[4], data[5]);

dit is het programma tot nu toe:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int data [255] ={0};
int a, b=0, c, d=1, i, k, p;

for (b=0; d==1 ;b++)
{ //start for loop
if (a>=0) // als a groter of gelijk is aan 0 start dan if loop
{ //start if loop
c=(b+1); //teller stappen
c=b; //tussenwaarde c stappen
printf("geef een getal : "); //vul een waarde in
scanf("%d", &a); //in te vullen waarde
printf("stap %d", b); //laat stap op het scherm zien locatie in array
printf("\n"); //sla een regel over
data=a; //zet de waarde van a op de locatie van waarde b in de array
}
else
{
d=0; //maak d waarde 1 en stop de for loop
}
}
//for (i=0; i=b ;i++) //laat het aantal waarden b zien in de array
//{
printf("%d%d%d%d%d", data[0], data[1], data[2], data[3], data[4], data[5]); //zet de waarde van de array op het scherm
//}

system("PAUSE");
return 0;
}
 
Allereerst:

Ook in deze forloop zit een fout, daarom zal hij het niet doen, zelfde probleem als bij je eerste.Dan:

Om een array uit te lezen met een loop terwijl de grote van de array variabel is, heb je een aantal dingen nodig:
-loop
-strlen
strlen is en commando om de lengte van een string (=char array) op te zoeken.
Dus voeg het volgende toe

Code:
#include <string.h> //belangrijk voor strlen!

//dan in main:

int iTeller = 0; // ik gebruik altijd duidelijke namen voor vars, voor de overzichtelijkheid

for (iTeller =0; iTeller < strlen(Data); iTeller++)
{
    printf("%d", Data[iTeller]);
}

De for-loop zet iTeller op 0 (voor de zekerheid) en hoogt vervolgens iTeller net zo lang op tot de lengte (=aantal arrayelementen) is bereikt.
Iedere keer dat de teller verhoogd wordt, wordt de statement tussen {} uitgevoerd. Dus de eerste keer :
printf("%d", Data[0]);
dan:
printf("%d", Data[1]);

etc.

gr Niek
 
Hallo allemaal,

Nou het is uiteindelijk gelukt om de getallen in te voeren in de array en deze op het scherm te toveren, hierna moest ik m nog laten bepalen of het een palindroom was zie hier t eindresultaat het zal uiteraard makkelijker kunnen, maar voor een beginner ben ik best trots op mezelf :) :)

/*------------------------------------------------------------------------------
Doel : De invoer voor een programma is een reeks integers afgesloten met een
negatief getal. Bepaal of de getallenreeks een palindroom is, dwz
achterstevoren gelezen hetzelfde is als normaal gelezen.
---------------------------------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{ //start main loop
int data [255] ={0}; //array 255 posities groot
int getal, //invoer gegevens getal
stap=0, //stappen teller invoer for loop
stop=1, //stop for loop invoer
positie, //positie array
waarde, //positie van getal binnen de array
som, //rekenwaarde voor de hoeveelheid vergelijkingen te maken om een palindroom te bepalen
begin=0, //Begin positie waarde voor berekening binnen array
i, j, k; //variabelen voor tellerwaarden in for loops

printf("\t\t\tPalindroombepaler\n\n\n");
printf("=================================================================\n");
printf("Voer een reeks getallen in, het programma zal automatisch gaan\n");
printf("bepalen of de ingevoerde data een palindroom is.\n");
printf("Sluit de getallenreeks af met een negatief getal om de berekening\n");
printf("te starten\n");
printf("=================================================================\n\n\n");

for (k=0; stop==1 ;k++)
{ //start for loop voor invoer data
if (getal>=0) // als a groter of gelijk is aan 0 start dan if loop
{ //start if loop
stap=(stap+1); //stappenteller
waarde=stap-1; //berekening positie van getal in de array

printf("geef een getal : "); //vul een waarde in
scanf("%d", &getal); //in te vullen waarde
printf("\n"); //sla een regel over
data[waarde]=getal; //zet het getal op de positie van de uitkomst van waarde
} //einde if loop

else
{ //start else loop
stop=0; //maak d waarde 0 en stop de for loop
} //einde else loop
} //einde for loop voor invoer data

printf("\n\n");
positie=waarde-1; //berekening voor positie van array
printf("Ingevoerde data\n"); //laat text op het scherm zien
for(i=0;i<waarde;i++) //for loop printen van de ingevoerde gegevens binnen de array
printf("%d", data); //laat array op het scherm zien
printf("\n\n\n\n"); //sla een regel over


som=(positie/2); //rekenwaarde voor het bepalen van de palindroom (aantal x vergelijken)
for (j=0; j<som;j++) //for loop voor bepalen palindroom
{ //start for loop
if (data[begin] == data[positie]) //als array data begin gelijk is aan data eind doorloop for loop
{ //start if loop vergelijking
begin=(begin+1); //waarde begin = waarde begin +1
positie=(positie-1); //waarde positie = waarde positie - 1

if (j==(som-1)) //if loop voor vergelijking palindroom is waar
{ //start if loop
printf("\t==========================================\n");
printf("\t!! De ingevoerde data is een palindroom !!\n"); //laat text op het scherm zien
printf("\t==========================================\n\n\n");
} //einde if loop
} //einde if loop vergelijking

else
{ //start else loop
j=positie; //als waarde j gelijk is aan waarde positie
printf("\t===========================================\n");
printf("\t!! De ingevoerde data is geen palindroom !!\n"); //laat text op het scherm zien
printf("\t===========================================\n\n\n");
} //einde else loop
} //einde for loop

//printf("\n\n\n");
system("PAUSE");
return 0;
} //einde main loop


Ik moet nu aan de volgende opdracht gaan beginnen :
Ik moet een functie gaan schrijven welke de karakters in een string naar links en naar rechts kan schuiven over N posities. Volgens de opgave moet de functie
void Roteer_Links(char *s, int n) gaan heten.
hieronder een voorbeeld van de opdracht :
De string “abcdefg” over N = 2 verschuiven levert dus “cdefgab”. Schrijf ook de functie Roteer_Rechts.

Nu lukt het me al om een hoeveelheid karakters in een string in te voeren, maar ik heb echt nog geen idee hoe ik de karakters net als in een array kan oproepen en uiteindelijk verschuiven iemand misschien een paar tips??
 
Ik denk dat je hier beter een nieuw topic voor kunt starten omdat dan meer mensen je opst lezen. Post ook wat code, dan zal ik eens zien wat ik kan betekenen :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan