Προς το περιεχόμενο

ποσΟστο γραμματων σε ενα αρχειο


giannis-21

Προτεινόμενες αναρτήσεις

Δημοσ.

παιδες γεια σας! εχω μια ασκηση παλι και θελει ο τυπας να βρουμε το ποσοστο των γραμματων μεσα σε ενα αρχειο.τι πρωτο που μου ηρθε στο μυαλο ηταν με counters αλλα ειναι πολυ απλο νομιζω. καμια αλλη ιδεα μηπως?

 

εφτιαξα αυτον τον οδικα σημερα αλλα δεν δουλευει μετα απο ενα σημειο στο αρχειο..μου βγαζει οτι γραμματα θελει..

 

#include <stdio.h>

#include <string.h>

#include <ctype.h>

 

 

void lowercase(char string[])

{

int i = 0;

 

while ( string )

{

string = tolower(string);

i++;

}

}

int main()

{

int i,j,size,periptwsh,cnt=-1,trexousa_thesh,metrhths=0;

char pinakas[26],ch,tarxeio[50];

FILE *filep; /* declare a FILE pointer */

 

printf("ginete i anagnosi tou arxeiou.\n");

filep=fopen("data.txt", "r");

/* open a text file for reading */

 

if(filep==NULL) {

printf("Error: can't open file.\n");

/* fclose(file); DON'T PASS A NULL POINTER TO fclose !! */

return 1;

}

else {

 

while(!feof(filep))

{

ch=fgetc(filep);

cnt++;

}

fseek(filep,0,0);

printf("h leksh poy briskete sto arxeio einai h:\n\n");

printf("%d\n",cnt);

for(i=0;i<26;i++){

pinakas= 0; }

fscanf(filep,"%s",&tarxeio);

lowercase(tarxeio);

for(i=0;i<cnt;i++)

{

for (j=97;j<=122;j++){

if (tarxeio==j){

pinakas[j-97]=pinakas[j-97]+1;

metrhths++;

printf("%c ",tarxeio);

}

 

}

}

for(i=0;i<26;i++){

if(pinakas>0)

printf("%c: %d me pososto %.2f\n",(char)(i+97),pinakas,(float)pinakas/metrhths*100);

 

 

}

 

}

 

return 0;

}

Δημοσ.

Ιδέα: Διάβασε το αρχείο παίρνοντας ένα χαρακτήρα την φορά. Φύλαξε το πλήθος των χαρακτήρων σε μία μεταβλητή "int total_chars". Επιπλέον κάθε φορά που διαβάζεις ένα χαρακτήρα θα ελέγχεις εάν είναι γράμμα (tip: int isalpha (int c)), τότε θα αυξάνεις μια άλλη μεταβλητή "int total_letters". Το ποσοστό των γραμμάτων είναι: (total_letters / total_chars) * 100. Ελπίζω να βοήθησα.

Δημοσ.

Εκτος και αν εννοεις τι ποσοστο εμφανισης εχει ο χαρακτηρας 'α', τι ποσοστο ο 'b' κτλ

Σε αυτη τη περιπτωση θελεις ενα counter variable για καθε χαρακτηρα που θελεις να μετρησεις. Στο τελος κανεις τη σουμα των counters και βγαζεις ποσοστα.

Δημοσ.
Ιδέα: Διάβασε το αρχείο παίρνοντας ένα χαρακτήρα την φορά. Φύλαξε το πλήθος των χαρακτήρων σε μία μεταβλητή "int total_chars". Επιπλέον κάθε φορά που διαβάζεις ένα χαρακτήρα θα ελέγχεις εάν είναι γράμμα (tip: int isalpha (int c)), τότε θα αυξάνεις μια άλλη μεταβλητή "int total_letters". Το ποσοστό των γραμμάτων είναι: (total_letters / total_chars) * 100. Ελπίζω να βοήθησα.

 

με βοηθησες αρκετα διοτι ειχα προβλιμα με τα κενα και τους ειδικους χαρακτηρες και τωρα με το isalpha,isblunk,isspace θα το φτιαξω μαλλον

 

να ειστε καλα και οι 2 που απαντησατε

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...