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

C/C++: deixnontas stin consola to % percent completed


Stilewag

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

Δημοσ.

Thelw na "deixnw" stin consola to % percent compled, stin periptosi px pou kanw read ena text file:

 

#include <stdio.h>

#include <stdlib.h>

 

>void main(void)
{
unsigned long NumberOfEOLN=0,NumberOfChars=0,FileSize=0,i;
float Cent;
unsigned char Ch;
FILE *inF=fopen("./in.txt", "rb");

//measure file's size, number of EOLN, and number of character (without EOLN)
while (!feof(inF))
{
	if (fscanf(inF, "%c", &Ch) >= 0)
	{
		if (Ch==10) NumberOfEOLN++;
		else if (Ch!=10) NumberOfChars++;
		FileSize++;
	}
}

printf("\n\n\nfile size: %li", FileSize);
printf("\nnumber of EOLN: %li", NumberOfEOLN);
printf("\nnumber of characters (non-EOLN): %li", NumberOfChars);

for (i=1; i<=FileSize; i++)
{
	Cent = i % FileSize;
	printf("%f   ", Cent);

}


fclose(inF);
}

 

Kati exw kanei lathos. Ti prepei na alaksw gia na mou deixnei to percent (%) swsta?

 

PS: elpizw na min peirazei pou evala PHP code, apla o browser pou exw den ta deixnei alliws. An anaptisete protimiste to tag [ php ] apo to [ code ]

Δημοσ.

Επειδή το '%' είναι δεσμευμένο σύμβολο από την C για χρήση στην printf (και αλλού) ώστε π.χ. να χρησιμοποιείται σε εκφράσεις του στυλ %d, %c, κλπ, θα πρέπει να το γράψεις διπλό δηλαδή "%%".

 

>printf("5%% Complete");

Αποτέλεσμα : "5% Complete"

 

:)

Δημοσ.

kai egw prospathousa na tou valw \\% :)

 

to parakatw programma omws mou vgazei lathos: "Invalid use of dot in function main"

 

#include <stdio.h>

 

>void main(void)
{
float Percent;
unsigned int k;
unsigned long i;

for (i=1; i<=600; i++)
{
	while (i<=600)
	{
		Percent = (float)i./ 600;
		printf("%f ", Percent);
	}
}

}

Δημοσ.

Η τελεία που σου υπέδειξα στο άλλο post χρησιμοποιείται ΜΟΝΟ για αριθμους, οχι μεταβλητές.Δοκίμασε να την βάλεις στο 600 δηλαδή κάπως έτσι

>i/600.;

 

EDIT:Μόλις ξανακοίταξα τον κώδικα και έχεις infinite loop στην while.Τι ακριβώς θες να κάνεις?

Δημοσ.
EDIT:Μόλις ξανακοίταξα τον κώδικα και έχεις infinite loop στην while.Τι ακριβώς θες να κάνεις?

 

LOL :D itan ena lathos, apla dokimaza apo afto:

 

for (i=1; i<=600; i++)

{

...

}

 

na paw se afto:

 

while (i<=600)

{

i++

...

}

 

---

 

An thelw na diairesw 2 metavlites, pali sto idio meros tha valw tin teleia?

Δημοσ.

Αν θες να διαιρέσεις δυο μεταλητές και η μια από τις δύο είναι double (ή οποιοσδήποτε αλλος τύπος κινητής υποδιαστολής) τότε δεν χρειάζεται να κάνεις τπτ.Αν και οι δύο μεταβλητές είναι δηλωμένες ώς ακέραιοι τότε κάνε cast μια από τις δύο σε τύπο κινητής υποδιαστιλής πριν εκτελέσεις την διαίρεση.

 

Υ.Γ:Πότε θα αρχίσεις να γράφεις Ελληνικά? :)

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

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

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