THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: George_RT on December 05, 2016, 14:07:18 pm



Title: [Δομημένος Προγραμματισμός] Άσκηση 4 (Ημ/νία λήξης: 14/12/2016)
Post by: George_RT on December 05, 2016, 14:07:18 pm
Γράψτε ένα πρόγραμμα το οποίο διαβάζει χαρακτήρες από την είσοδό του μέχρι o χρήστης να δώσει το χαρακτήρα θαυματικό. Στη συνέχεια να τυπώνει ένα ραβδόγραμμα με αστεράκια για κάθε έναν από τους εμφανιζόμενους χαρακτήρες. Επιπλέον για τους χαρακτήρες που εμφανίζονται στην είσοδο του προγράμματος τις μέγιστες και τις ελάχιστες φορές εμφανίζει τον αντίστοιχο χαρακτήρα καθώς και τον αριθμό των φορών που εμφανίστηκε.

Παράδειγμα εξόδου:
Code:

a ********

b ****

e ************

z *

Most frequent: e; 12 time(s).

Least frequent: z; 1 time(s).


Title: Re: [Δομημένος Προγραμματισμός] Άσκηση 4 (Ημ/νία λήξης: 14/12/2016)
Post by: George_RT on December 08, 2016, 21:36:35 pm
Άλλαξε η ημερομηνία παράδοσης από της 18/12 στης 14/12


Title: Re: [Δομημένος Προγραμματισμός] Άσκηση 4 (Ημ/νία λήξης: 14/12/2016)
Post by: kostino on December 09, 2016, 06:54:25 am
Οι χαρακτηρες να εισαγονται ενας ενας η δεν εχει σημασια?


Title: Re: [Δομημένος Προγραμματισμός] Άσκηση 4 (Ημ/νία λήξης: 14/12/2016)
Post by: Talaipa on December 09, 2016, 16:22:03 pm
Οι χαρακτηρες να εισαγονται ενας ενας η δεν εχει σημασια?

Οπως ακριβώς και στην 2η εργασία... ολοι μαζι!


Title: Re: [Δομημένος Προγραμματισμός] Άσκηση 4 (Ημ/νία λήξης: 14/12/2016)
Post by: vgkogkogl on December 13, 2016, 18:19:49 pm
Λύση??


Title: Re: [Δομημένος Προγραμματισμός] Άσκηση 4 (Ημ/νία λήξης: 14/12/2016)
Post by: kostino on December 14, 2016, 03:40:39 am
Code:
#include <stdio.h>

int main() {
    char ch='\0';
int i=0,max=0,min=0;
unsigned int counter[256]={0};
    //read a line of characters until ! is given
while (ch!='!')
    {
    scanf("%c",&ch);
    i=(int)ch;
    counter[i]++;
}

int j,k;

for(j=0;j<256;++j)
{
    if(counter[j]>0&&j!=33)//we don't want to calculate the amount of times the char ! was typed or calculate it towards the min or max
        {
    printf ("%c ",j);

    for(k=0;k<counter[j];++k)//Print the correct amount of stars
        {
    printf("*");
    }

    printf("\n");
        //calculate the min and max
        if(min==0||min>counter[j])
        {
            min=counter[j];
        }
        if(counter[j]>max)
        {
            max=counter[j];
        }

        }

}
//print all the most and least frequent characters
printf("Most Frequent:");
for(j=0;j<256;++j){
        if(counter[j]==max&&j!=33)
            printf(" %c ;",j);
}
printf(" %d time(s)\n",max);
printf("Least Frequent:");
for(j=0;j<256;++j){
        if(counter[j]==min&&j!=33)
            printf(" %c ;",j);
}
printf(" %d time(s)\n",min);
    return 0;
}