Star_Light έγραψε:Kυριλέ!
Λοιπον ημουν ετοιμος να γκρινιάξω για μια while που δεν μου έβγαινε σε θέμα δεικτών αλλα
με υπομονή ξεκινησα απο την for που ηδη ξερω καπως καλυτερα πιο συγκεκριμενα παραθετω κωδικα ο οποιος
πρσδιοριζει και την βασικη τεχνικη του migf1 για [Ν+1] μεσα σε εναν πινακα

πραγματικα πολυ καλη τεχνικη
- Κώδικας: Επιλογή όλων
#include<stdio.h>
int main(void)
{
int x1[10]={0};
int x2[3+1]={1,1,2,0};
int i;
int *p_x2;
p_x2=&x2[0];
while(i!=10)
{
printf("%d",x1[i]);
i++;
}
//My first step
/*for(p_x2=&x2[0]; *p_x2<&x2[4]; p_x2++)
printf("\n%d",*p_x2);
//MY second step
for(p_x2; *p_x2!=0; p_x2++)
printf("\n%d", *p_x2);
*/
//And my finally step now appears into a while loop
while(*p_x2!=0)
{
printf("\n%d",*p_x2);
p_x2++;
}
return 0;
}

Η τεχνική με το +1 είναι περισσότερο για strings, για το μηδενικό χαρακτήρα στο τέλος, αλλά ΟΚ μπορείς να την υιοθετήσεις και σε άλλους τύπους δεδομένων, με την προϋπόθεση πως θα χρησιμοποιείς μια τιμή ως σηματοδότη του τέλους του πίνακα, ή για να σηματοδοτείς κενά κελιά. Π.χ. σε πίνακα φυσικών αριθμών μπορείς να χρησιμοποιήσεις έναν αρνητικό αριθμό ως σηματοδότη.
Σου πρόσθεσα το σωστό for στον κώδικά σου, και άλλαξα τα ονόματα των μεταβλητών ώστε να είναι (πολύ) πιο ευανάγνωστος ο κώδικάς. Επίσης, αρχικοποιήσα το i που δεν το αρχικοποιούσες όταν το όριζες, με αποτέλεσμα να κρασάρει στην while, αφού μόνο ο Θεός ξέρει με ποια τιμή ξεκινάει όταν δεν το αρχικοποιείς

- Κώδικας: Επιλογή όλων
#include <stdio.h>
int main( void )
{
int array1[ 10 ] = { 0 };
int array2[ 3+1 ] = { 1, 1, 2, 0 };
int i=0, *p = array2;
while (i != 10 )
printf( "%d", array1[ i++ ] );
/*** DISABLED start
//My first step
for (p = &array2[0]; *p < &array2[4]; p++)
printf("\n%d", *p);
//MY second step
for (p; *p != 0; p++)
printf("\n%d", *p);
// migf1: CORRECT for-loop
for (p=array2; *p != 0; p++ )
printf("%d", *p);
putchar('\n');
DISABLED end ***/
//And my finally step now appears into a while loop
while ( *p != 0 )
printf("%d\n", *p++);
return 0;
}
btw, ένα από τα πλεονεκτήματα του for έναντι των while και do-while ότι η σύνταξή της σε προτρέπει να βάλεις αρχική τιμή στον μετρητή σου πριν ξεκινήσει.
έγραψε:
Π.Σ Μια ερωτηση... στην προηγουμενη συνάρτηση εχεις βαλει να επιστρέφει το i , αλλα δεν το εχεις βαλει να εμφανιζεται σε κανενα σημειο της main... εκτος και αν δεν εχω δει καλα....
Η συνάρτηση επιστρέφει τη θέση του n μέσα στον nums αλλιώς -1 αν το n δεν υπάρχει στο nums. Στη main() την καλώ όταν αναθέτω την τιμή επιστροφή της στη μεταβλητή pos.