Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

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

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 27 Ιούλ 2011, 18:29

Ναι, αφού όλα ως strings θα τα διαβάζεις και το καθένα τους θα το μετατρέπεις στον τύπο που θέλεις με τις συναρτήσεις: atoi, atol και atof.

Για παράδειγμα...
Εικόνα
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 27 Ιούλ 2011, 18:41

Ναι αλλά αφού όταν παίρνουμε με το s_get παίρνουμε strings, γίνεται να βάλουμε το atoi ως παράμετρο;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 27 Ιούλ 2011, 18:42

Διάβασες τι κάνει η atoi στο link που έχω δώσει;
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 27 Ιούλ 2011, 18:47

Να πω την αλήθεια όχι αλλά νόμιζα πως μετατρέπει τη string σε int :oops:
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 27 Ιούλ 2011, 19:17

Γίνεται και χωρίς την s_gets γιατί για κάποιο λόγο το χαρακτήρα μου το βγάζει με ένα τετράγωνο και τα νούμερα δεν τα διαβάζει καν, μου τα λέει ως μηδενικά και κάθε 2 φορές δεν περιμένει να διαβάσει!
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 27 Ιούλ 2011, 19:23

Για δείξε τον κώδικα που έχεις γράψει και σου κάνει τα παραπάνω.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 27 Ιούλ 2011, 19:25

migf1 έγραψε:Για δείξε τον κώδικα που έχεις γράψει και σου κάνει τα παραπάνω.

Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>

char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ );
*cp = '\0';
return s;
}

int main() {
char c[1],i1[1],i2[1],f1[1],f2[1],l1[1],l2[1];

printf("Insert a char: ");
scanf("
fflush(stdin);
printf("\nYou inserted %c",c);
printf("\nInsert an int: ");
s_get(i1,1);
printf("\nInsert the second int: ");
s_get(i2,1);
printf("\n%d * %d = %d",(atoi(i1)),(atoi(i2)),((atoi(i1)) * (atoi(i2))));

printf("\nInsert a float: ");
s_get(f1,1);
printf("\nInsert the second float: ");
s_get(f2,1);
printf("\n%f * %f = %f",(atof(f1)),(atof(f2)),((atof(f1)) * (atof(f2))));
return 0;
}
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 27 Ιούλ 2011, 19:26

stamatiou έγραψε:
migf1 έγραψε:Για δείξε τον κώδικα που έχεις γράψει και σου κάνει τα παραπάνω.

Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>

char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ );
*cp = '\0';
return s;
}

int main() {
char c[1],i1[1],i2[1],f1[1],f2[1],l1[1],l2[1];

printf("Insert a char: ");
scanf("
fflush(stdin);
printf("\nYou inserted %c",c);
printf("\nInsert an int: ");
s_get(i1,1);
printf("\nInsert the second int: ");
s_get(i2,1);
printf("\n%d * %d = %d",(atoi(i1)),(atoi(i2)),((atoi(i1)) * (atoi(i2))));

printf("\nInsert a float: ");
s_get(f1,1);
printf("\nInsert the second float: ");
s_get(f2,1);
printf("\n%f * %f = %f",(atof(f1)),(atof(f2)),((atof(f1)) * (atof(f2))));
return 0;
}

To δοκίμασα και με 0 στα arrays αλλά το ίδιο
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 27 Ιούλ 2011, 19:32

stamatiou έγραψε:
migf1 έγραψε:Για δείξε τον κώδικα που έχεις γράψει και σου κάνει τα παραπάνω.

Spoiler: show
Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>

char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ );
*cp = '\0';
return s;
}

int main() {
char c[1],i1[1],i2[1],f1[1],f2[1],l1[1],l2[1];

printf("Insert a char: ");
scanf("
fflush(stdin);
printf("\nYou inserted %c",c);
printf("\nInsert an int: ");
s_get(i1,1);
printf("\nInsert the second int: ");
s_get(i2,1);
printf("\n%d * %d = %d",(atoi(i1)),(atoi(i2)),((atoi(i1)) * (atoi(i2))));

printf("\nInsert a float: ");
s_get(f1,1);
printf("\nInsert the second float: ");
s_get(f2,1);
printf("\n%f * %f = %f",(atof(f1)),(atof(f2)),((atof(f1)) * (atof(f2))));
return 0;
}

Φίλε Σταματίου,

θα σου πρότεινα να διαβάσεις πιο προσεχτικά ΟΛΟΚΛΗΡΗ αυτή εδώ τη δημοσίευση και να βεβαιωθείς πως την έχεις κατανοήσει πλήρως, πριν προχωρήσεις στην επίλυση της άσκησης!

Δεν έχει καμία σχέση αυτός ο κώδικας με αυτό που περιγράφω σε εκείνη τη δημοσίευση. Π.χ. που είναι στον κώδικά σου το string inbuf μέσα στο οποίο διαβάζουμε τη γραμμή εισόδου με την s_get, όπως δείχνω στο 3ο παράδειγμα εκεί;
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 27 Ιούλ 2011, 19:51

migf1 έγραψε:
stamatiou έγραψε:
migf1 έγραψε:Για δείξε τον κώδικα που έχεις γράψει και σου κάνει τα παραπάνω.

Spoiler: show
Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>

char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ );
*cp = '\0';
return s;
}

int main() {
char c[1],i1[1],i2[1],f1[1],f2[1],l1[1],l2[1];

printf("Insert a char: ");
scanf("
fflush(stdin);
printf("\nYou inserted %c",c);
printf("\nInsert an int: ");
s_get(i1,1);
printf("\nInsert the second int: ");
s_get(i2,1);
printf("\n%d * %d = %d",(atoi(i1)),(atoi(i2)),((atoi(i1)) * (atoi(i2))));

printf("\nInsert a float: ");
s_get(f1,1);
printf("\nInsert the second float: ");
s_get(f2,1);
printf("\n%f * %f = %f",(atof(f1)),(atof(f2)),((atof(f1)) * (atof(f2))));
return 0;
}

Φίλε Σταματίου,

θα σου πρότεινα να διαβάσεις πιο προσεχτικά ΟΛΟΚΛΗΡΗ αυτή εδώ τη δημοσίευση και να βεβαιωθείς πως την έχεις κατανοήσει πλήρως, πριν προχωρήσεις στην επίλυση της άσκησης!

Δεν έχει καμία σχέση αυτός ο κώδικας με αυτό που περιγράφω σε εκείνη τη δημοσίευση. Π.χ. που είναι στον κώδικά σου το string inbuf μέσα στο οποίο διαβάζουμε τη γραμμή εισόδου με την s_get, όπως δείχνω στο 3ο παράδειγμα εκεί;

:oops: Νόμιζα ότι το inbuf δεν ήταν απαραίτητο...
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι