Formatowanie łańcucha w pętli C - początkujący

0

Dzień dobry,
Mieliśmy kolejne ciekawe zadania na zajęciach. Tym razem przyszło napisać program, który w pętli zmienia lekko formatowanie wypisywanego tekstu.
Mianowicie chodzi o wykorzystanie pętli for do wypisywania po sobie (w następnych linijkach) coraz to dłuższego rozwinięcia dziesiętnego danej liczby i biblioteki string do modyfikacji tegoż łańcucha.
Należało to zrobić z jednoczesnym wypisaniem łańcucha formatującego - co akurat udało mi się, ale w taki sposób, że dla mnie niemożliwym już było dokończenie programu wg. schematu. Byłbym wdzięczny za pomoc w realizacji zadania (zapewniam też, że nie jest to żadnego rodzaju praca domowa - wszystkie zadania wykonujemy na ocenę wyłącznie podczas ćwiczeń). Program ma wyglądać tak:

#include <stdio.h>
#include <string.h>
#include <math.h>

int main() {

    char form[8]= ---;
    float liczba = jakaś_liczba;
    int i = 0;
    for(;i<3;i++){
      ???(form, "------",i); //zbudowanie łańcucha formatującego
      printf("Formatowanie: ------ : ", form); //wypisanie łańcucha formatującego
      ???(ttt, "\n"); //doklejenie przejścia do nast. linii
      printf(ttt, liczba); //liczba
  }

  return 0;
}

Gdzie '???' to jakaś bliżej nieokreślona funkcja, 'ttt' - jakaś zmienna, '------' - tekst do wpisania.
Dałem tu tyle informacji, ile sami dostaliśmy. Output ma wyglądać tak:

Formatowanie: %.0lf : 2
Formatowanie: %.1lf : 2.3
Formatowanie: %.2lf : 2.34

Zdaję sobie sprawę z tego, że żeby nauczyć się programowania to 1. trzeba się w ogóle uczyć, 2. dużo ćwiczyć, ale czasami bywa tak, że trzeba coś zrobić, ale nie ma się wystarczająco umiejętności, żeby sobie z czymś poradzić. Zadanie zapewne jest trywialne dla kogoś, kto już trochę się w takie rzeczy bawił. Także prosił bym tylko, żeby pamiętać, że jestem zielony i do niedawna miałem bardzo marginalną styczność z programowaniem. Ponadto nigdzie nie udało mi się znaleźć podobnego problemu. Dziękuję za pomoc i wyrozumiałość.

0

https://en.cppreference.com/w/c/io/fprintf

Generalnie formatu zbliżonego do %.*f.

0
kq napisał(a):

https://en.cppreference.com/w/c/io/fprintf

Generalnie formatu zbliżonego do %.*f.

Nie było jeszcze tego na wykładach, a zadanie jest sprzed dwóch tygodni.
Zdecydowanie musi to być zrobione używając jeszcze bardziej podstawowych funkcji.

2

Popatrz na ten uproszczony przykład, który pokazuje, jak to wszystko się klei:

#include <stdio.h>
#include <string.h>
#include <math.h>

void budujLancuchFormatujacy(char* form)
{
    strncpy(form, "%.3lf", 6);
}

int main() 
{
    char form[8];
    float liczba = 3.45421;
    budujLancuchFormatujacy(form);
    printf("Formatowanie: %s\n", form);
    printf(form, liczba); 
    
    return 0;
}

Oczywiście w Twoim przypadku nie będziesz miał sztywno 3 (w %.3lf), tylko musisz tę liczbę przekazać do funkcji i użyć. Pewnie nie będziesz też używać strncpy.

0

Jak nie było czegoś na wykładach to nie można tego się nauczyć? To szalenie słabe podejście. Poza tym ciężko o bardziej podstawową funkcję niż printf.

1 użytkowników online, w tym zalogowanych: 0, gości: 1