Welcome, Guest
Username: Password: Remember me

TOPIC: Προγραμματισμός (εργασία) στην C

Προγραμματισμός (εργασία) στην C 3 years 1 month ago #1

  • miltostar
  • miltostar's Avatar
  • Offline
  • Wishlister
  • Posts: 2
Καλησπέρα και καλή χρονιά! ´Εχω μια εργασία για τη σχολή και πρέπει να την παραδόσω μέχρι το βράδυ..Είναι μια άσκηση στη C η οποία θέλει να γράψουμε ένα πρόγραμμα το οποίο:

α) θα διαβάζει από το πληκτρολόγιο μια συμβολοσειρά (μαξ 80) και ένα χαρακτήρα.

β) θα υπολογίζει τη συχνότητα εμφάνισης του χαρακτήρα στη συμβολοσειρά και θα το εκτυπώνει.

γ) θα υπολογίζει και θα εκτυπώνει τη συμβολοσειρά ανάστροφα (π.χ. αν η συμβ. είναι τραπέζι θα την εκτυπώνει: ιζέπαρτ). Η αναστροφή της συμβολοσειράς θα γίνει με μια συνάρτηση που θα δέχεται την αρχική συμβολοσειρά και θα επιστρέφει την ανάστροφη με τη βοήθεια των δεικτών. Μέσα στη συνάρτηση η διαδικασία αναστροφής της συμβολοσειράς μπορείνα γίνει με οποιαδήποτε μέθοδο. Πριν από την εκτύπωση της ανάστροφης συμβολοσειράς θα εκτυπώνεται κ η αρχική. Οι εκτυπώσεις θα γίνουν στο κυρίως πρόγραμμα.



Το πρόβλημά μου είναι ότι α)δεν ξέρω αν όντως έχω κανει σωστά το πρόγραμμα (για το ερώτημα γ) και β) ότι όταν το τρέχω στο τέλος, όταν είναι να εκτυπώσει την ανεστραμμένη συμβολοσειρά μου βγάζει σφάλμα κατάτμησης. Παρακάτω σας παραθέτω τον κώδικα. Ευχαριστώ εκ των προτέρων!



#include <stdio.h>
#include <string.h>
char reverse (char b )
{
char *ptr, *first;
ptr=b;
first=ptr;
while (*ptr!='\0')
{
ptr++;
}
ptr--;
while (ptr>=first)
{
b=*ptr;
ptr--;
}
return (b ) ;

}

int main ()
{
char s[80], a, k;
int times=0, i;
printf (" Δώσε συμβολοσειρά. \n");
gets (s);
printf (" Δώσε γράμμα. \n");
scanf ("%c", &a);
for (i=0;i<=80;i++)
{
if (s==a)

times++;
}
if (times==1)

printf ("Το γράμμα %c εμφανίζεται %d φορά. \n",a,times);
else
printf ("Το γράμμα %c εμφανίζεται %d φορές. \n",a,times);
printf ("Η αρχική συμβολοσειρά είναι %s. \n",s);
k=reverse(s);
printf ("Η ανεστραμμένη συμβολοσειρά είναι %s. \n",k);
}
Last Edit: 3 years 1 month ago by miltostar.
The administrator has disabled public write access.

Προγραμματισμός (εργασία) στην C 3 years 1 month ago #2

  • Theo
  • Theo's Avatar
  • Offline
  • Geia-xara-unboxer
  • Computer Engineer / Tech Enthusiast
  • Posts: 3189
  • Thank you received: 670
Θα μπορούσα να σε βοηθήσω, αλλά φαντάζομαι έχει περάσει η διορία, ε?
Αχχ... όλοι μας τελευταία στιγμή τα σκεφτόμαστε :S
The administrator has disabled public write access.

Προγραμματισμός (εργασία) στην C 2 years 6 months ago #3

  • power2015
  • power2015's Avatar
  • Offline
  • Wishlister
  • Posts: 7
for (i=0;i<=80;i++) Τελικά το έλησες; Το σφάλμα έβγαινε γιατί έβγαινες έξω από τον πίνακα
Last Edit: 2 years 6 months ago by power2015.
The administrator has disabled public write access.
Powered by Kunena Forum