... ako docielim, aby vypísané čísla boli odsadené zľava o počet miest, ktoré je udané najdlhším číslom??
napr.
Kód: Vybrať všetko
27
9
85
619Kód: Vybrať všetko
27
9
85
619Kód: Vybrať všetko
printf("%6i",hodnota)ano subor je textovy a na kazdom riadku je jedno cislo... mam tie cisla ulozit do pola a potom ich vypisat s tym odsadenim...juho napísal:takto to nepochopim budes musiet dat podrobny jendoduchy popis
co ja si myslim tak mas nejaky subor z neho nacitas prvky do pola ci jak ? ten subor je textovy alebo binarny?
pomocou logaritmu? môžeš upresniť? díky...chrono napísal:Keď nevieš, aké veľké je to najväčšie číslo, budeš to musieť najskôr zistiť a až potom to budeš vypisovať (počet miest môžeš zistiť napr. pomocou logaritmu).
aj som si myslel, že to nepôjde...juho napísal:ked to chces hentym sposobom tak to by som chcel vidiet ze ako doplnis za % nejaku premennu. musis to vyriesit nejak inak.
napriklad prazdnymi miestami.
Kód: Vybrať všetko
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#define MAX_NUMBERS 32
int dlzka(int n)
{
if (n == 0) return 1;
else return log10(n)+1;
}
int main(void)
{
FILE *file;
int num, i;
int numbers[MAX_NUMBERS];
int count = 0, maxlen = 0;
file = fopen("numbers.txt", "r");
if (file == NULL) {
return EXIT_FAILURE;
}
while (fscanf(file, "%i", &num) > 0) {
if (maxlen < dlzka(num)) maxlen = dlzka(num);
numbers[count] = num;
count++;
if (count >= MAX_NUMBERS) break;
}
fclose(file);
fprintf(stdout, "Pocet: %i\nMaximalna dlzka: %i\n", count, maxlen);
for (i = 0; i < count; i++) {
fprintf(stdout, "%*i\n", maxlen, numbers[i]);
// fprintf(stdout, "%2$*1$i\n", maxlen, numbers[i]); // alebo môžeš použiť toto
}
return EXIT_SUCCESS;
}