Trojkat z literek w C

0

Witam!
Mam napisc program ktory pobierze z klawiatury 2 litery. Pierwsza litera bedzie oznaczala poczatek trojkata, a druga dlugosc jego 2 bokow tak, ze np:

jezeli pierwsza literka to c, a druga d to program powinien wygenerowac cos takiego :

c
cd
cde
cdef

moglby mnie ktos naprowadzic jak cos takiego zrobic? a konkretnie jak sprawdzic, że D to 4 litera alfabetu i jak zrobic petle ktora bedzie wypisywac kolejne litery alfabetu :)

Z góry dziekuje za pomoc oraz pozdrawiam!

0

char znak = 'a';

znak++; //znak = b
znak++; //znak = c
znak = 'z';
znak++; //znak = "śmiec", a dokladniej - zerknij do tabeli kodow ASCII

a jak zrobic trojkat - uzyj dwoch petli:
for i=0 i<ilelinii ++i
for j=0 j<ileliterwtejlinii ++j //ile liter w tej lini? wykombinuj..
wypiszwlasciwyznak //znaki - patrz wyzej

0

ok juz wszystko prawie rozumiem... tylko nie wiem jak zamienic litere na wage w alfabecie :)

Aha :) chyba juz wiem... na podstawie tabeli ascii to zrobic ? dobry trop?

0

najlepszym tropem jest 'zwiekszanie' literki 'a' o X oczek. powyzej zwikszalem o jedno oczko i wychdzilo 'b', potem 'c'..

0

rozumiem... ale wyznacznikiem dlugosci boku trojkata ma byc tez literka np. jezeli damy d to dlugosc boku ma byc 4 ;) wiec musze jakos zamienic literke na wage w alfabecie.. a=1 b=2... ale na razie nie wpadlem na to jak to zrobic... a to jest 97 w ascii wiec jezeli odejmiemy 96 od wartosci ascii to wyjdzie waga litery w alfabecie... ale jak zamienic literka na wartosc w tabeli ascii? tego nie wiem :( prosze o pomoc.

Chyba ze zmiejszac wartosc tej drugiej literki i zakonczyc petle jak bedzie ='a' ? ma to racje bytu?

0

wyznacznikiem dlugosci boku powinno byc to, ile bokow juz zrobiles -- patrz zewnetrzna petla

literke na wage mozesz tak samo jak wage na literke.. tylko trzeba pamietac o tym z liczy sie od zera, nie od jeden. 'a'+4 == 'e', 'e'-4 == 'a', 'e'-'a' == 4

0

ja juz nie wiem... sorry ze tak dupe zawracam.. napisalem cos takiego ale w ogole nie chce wejsc mi w petle nie wiem dlaczego.. :( prosze o pomoc :)

#include <stdio.h>

int main(void) {
    char q;
    char w;
    printf("Podaj 1st literke:");
    scanf("%c", &q);
    printf("Podaj 2nd literke:");
    scanf("%c", &w);
    char j;
    while ( q <= w ) {
          for ( j='a' ; j <= w ; j++ ) {
              printf("%c", j);
          }    
          ++q;     
          printf("\n");  
    }
    return 0;
}
0

przed wejsciem w petle daj:
printf("trojkat bedzie od >%c< do >%c<\n", q, w);
i sprawdz czy Q i W rzeczywiscie zawieraja te litery co podales

0

A wiec dodalem :

#include <stdio.h>

int main(void) {
    char q;
    char w;
    printf("Podaj 1st literke:");
    scanf("%c", &q);
    printf("Podaj 2nd literke:");
    scanf("%c", &w);
    
    printf("trojkat bedzie od >%c< do >%c<\n", q, w);
    while ( q <= w ) {
          char j;
          for ( j='a' ; j <= w ; j++ ) {
              printf("%c", j);
          }    
          ++q;     
          printf("\n");  
    }
    return 0;
}

efekt :

Podaj 1st literke:a
Podaj 2nd literke:trojkat bedzie od >a< do >
<

po wpisaniu pierwszej zmiennej printuje Od razu to co dodalem... nie czekajac na 2 zmienna :(
jakies pomysly?:/

0

chat j; oczywiscie przed petla while ;)

0

zwroc uwage na to co Ci printf wypisal:

pierwsza:

a<

druga:

<

jak sie przypatrzysz, to zauwazysz ze do tej drugiej zmiennej zostal wstawiony znak nowej linii. a teraz sobie przypomnij co dokladnie naciskales jak Cie program pytal o zdanie? i co robi scanf("%c") ? jak te dwa fakty powiazesz, rozwiazesz problem

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