Συντονιστής: konnn


migf1 έγραψε:Και οι 3 αυτοί τρόποι είναι χαζοί (xor, rot13, swap), με την έννοια πως σπάνε για πλάκα.

for (i=0; str[i] && str[i+1]; i+=2) {
c = str[i+1];
str[i+1] = str[i];
str[i] = c;
printf("%c%c",str[i+1],str[i]);
}

migf1 έγραψε:
Re: Τα πάντα για την C/C++

Star_Light έγραψε:Eχω μια αλλη απορια στο μεταξυ... ο ιδιος αλγοριθμος για αντιμεταθεση γιατι δεν δουλεύει με (+) ?
Ενω δειχνει να επεξεργαζεται με τον ιδιο τροπο τα δεδομενα με το αν βαζαμε (-) και ξεκινουσαμε απο i=1
- Κώδικας: Επιλογή όλων
for (i=0; str[i] && str[i+1]; i+=2) {
c = str[i+1];
str[i+1] = str[i];
str[i] = c;
printf("%c%c",str[i+1],str[i]);
}
αυτο πχ δεν μου κανει καμια αντιμεταθεση :/

migf1 έγραψε:Star_Light έγραψε:Eχω μια αλλη απορια στο μεταξυ... ο ιδιος αλγοριθμος για αντιμεταθεση γιατι δεν δουλεύει με (+) ?
Ενω δειχνει να επεξεργαζεται με τον ιδιο τροπο τα δεδομενα με το αν βαζαμε (-) και ξεκινουσαμε απο i=1
- Κώδικας: Επιλογή όλων
for (i=0; str[i] && str[i+1]; i+=2) {
c = str[i+1];
str[i+1] = str[i];
str[i] = c;
printf("%c%c",str[i+1],str[i]);
}
αυτο πχ δεν μου κανει καμια αντιμεταθεση :/
Βγάλε την printf μέσα από αυτό το loop. Μόλις τελειώσει το loop τη δουλειά του, τύπωσε το str με puts( str ) για να δεις να στα έχει κάνει αντιμετάθεση (με το μάτι πρόχειρα, δεν βλέπω να έχει κάποιο αλγοριθμικό πρόβλημα το loop).
@stamtiou: ποιος αλγόριθμος από όλους;

#include <stdio.h>
// Bitmasks
#define BIT1 1 // (1 << 0)
#define BIT2 2 // (1 << 1)
#define BIT3 4 // (1 << 2)
#define BIT4 8 // (1 << 3)
#define BIT5 16 // (1 << 4)
#define BIT6 32 // (1 << 5)
#define BIT7 64 // (1 << 6)
#define BIT8 128 // (1 << 7)
// Custom Types
typedef unsigned char Byte;
// ----------------------------------------------------------------------------------
char *s_byte2binary( char *s, const Byte byte )
{
if ( !s )
return NULL;
int z;
char *cp;
for (z=BIT8, cp=s; z > 0; z >>= 1, cp++)
*cp = (byte & z) == z ? '1' : '0';
*cp = '\0';
return s;
}
// ----------------------------------------------------------------------------------
void print_byte( const Byte byte )
{
char bin[8+1] = {0};
printf( "Bin: %s\t\tDec: %-3d\tHex: %-3x\tOct: %-3o\n",
s_byte2binary(bin, byte), byte, byte, byte );
return;
}
// ----------------------------------------------------------------------------------
int main( void )
{
Byte byte = 2; // αρχικοποίηση
print_byte( byte ); // τύπωμα αριθμού
byte |= BIT8; // άναμμα 8ου bit
print_byte( byte ); // τύπωμα αριθμού
byte &= ~BIT8; // σβήσιμο 8ου bit
byte |= BIT6; // άναμμα 6ου bit
print_byte( byte ); // τύπωμα αριθμού
return 0;
}

stamatiou έγραψε:Ο πρώτος, στο διορθωμένο κώδικα όταν βάλω κλειδί 2011 μου βγάζει τα ερωτηματικά...

migf1 έγραψε:Star_Light έγραψε:Eχω μια αλλη απορια στο μεταξυ... ο ιδιος αλγοριθμος για αντιμεταθεση γιατι δεν δουλεύει με (+) ?
Ενω δειχνει να επεξεργαζεται με τον ιδιο τροπο τα δεδομενα με το αν βαζαμε (-) και ξεκινουσαμε απο i=1
- Κώδικας: Επιλογή όλων
for (i=0; str[i] && str[i+1]; i+=2) {
c = str[i+1];
str[i+1] = str[i];
str[i] = c;
printf("%c%c",str[i+1],str[i]);
}
αυτο πχ δεν μου κανει καμια αντιμεταθεση :/
Βγάλε την printf μέσα από αυτό το loop. Μόλις τελειώσει το loop τη δουλειά του, τύπωσε το str με puts( str ) για να δεις να στα έχει κάνει αντιμετάθεση (με το μάτι πρόχειρα, δεν βλέπω να έχει κάποιο αλγοριθμικό πρόβλημα το loop).
@stamtiou: ποιος αλγόριθμος από όλους;
