• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tabliczka mnożenia c++

Cloud VPS
0 głosów
1,864 wizyt
pytanie zadane 28 marca 2019 w C i C++ przez sznycel Nowicjusz (220 p.)

Witam!

jestem w 3 klasie technikum i biore kurs na c++ w którym to ostatnio na zajęciach praktycznych robiona była modularna tabliczka mnożenia.

Założeniem było stworzyć tabliczkę numerowaną od 0 do maxx i od 0 do maxy tak aby uzupełnić tablice td[i][j]=i*j.

Mówiąc szczerze w pewnym momencie zgubiłem się i przestałem rozumieć kod i postanowiłem odtworzyć program w domu ale samodzielnie potrafię jedynie dojść do brania tabelki w obramówkę z "*" sam porównywałem kilka razy moją samodzielną prace i tę z pomocą ale nie mogę się doszukać błędów i powodu z którego mój autorski kod wykonuje się inaczej. Na razie chodzi mi o moment w którym gwiazdki są na górze i dole a nie po bokach.

z góry dziękuje za pomoc i pozdrawiam

kod z kursu:

#include <iostream>

using namespace std;


void gwiazdki(bool gora);
void wypiszwartosc(int w);
void wypelnij();
void wypisz();
int liczbacyfr(int w);


const int maxi=20;
const int maxj=20;
int maxcyfr= liczbacyfr((maxi-1 )*( maxj-1))+1;
int tab[maxi][maxj];

int main(int argc, char** argv) {
wypelnij();

gwiazdki(true);



wypisz();

gwiazdki(false);



	return 0;
}
void wypelnij(){
	for(int i=0;i<maxi;i++){
		for(int j=0;j<maxi;j++){
			tab[i][j]=i*j;

			/*
			tab[i][0]=i;
			tab[0][j]=j;
			*/
				if (j==0){
				//	j=i;
				tab[i][j]=i;
				}
				else if (i==0){
				//	i=j;
				tab[i][j]=j;
				}

		}
	}

}
void wypisz(){
	for(int i=0;i<maxi;i++){
		cout<<"X ";
			for(int j=0;j<maxi;j++){
				wypiszwartosc(tab[i][j]);

		}
		cout<<" X"<<endl;
	}
}

void wypiszwartosc(int w){
	int cyfry=liczbacyfr(w);
		cout<<w;
	for(int l=0; l<maxcyfr-cyfry; l++ ){

	cout<<" ";

	}
}

int liczbacyfr(int w){
	int k=1;

	while( w>=10){
		k++;
	 w=w/10;


	}


	return k;

}
	void gwiazdki(bool gora){
		cout<<"X ";
		for(int j=0; j<maxj; j++){
			int cyfry=1;
			if (gora== true) {
				cyfry=liczbacyfr(tab[0][j]);
			} else {
				cyfry=liczbacyfr(tab[maxi-1][j]);
			}
			for(int l=0; l<cyfry ; l++ ){
				cout<<"*";
			}
			for(int l=0; l<maxcyfr-cyfry ; l++ ){
				cout<<" ";
			}
		}



		cout<<" X"<<endl;
	}







moja próba w której doszedłem do robienia gwiazdek na górze i dole:


#include <iostream>

using namespace std;

void wypelnij();
void wypisz();
void ramka( );
int lcyfr( int l);
void wypiszw(int w);

	
const int maxx=10;
const int maxy=10;
int maxcyfr =lcyfr ((maxx-1)*(maxy-1))+1;

int td[maxx][maxy];

int main() {


	wypelnij();
ramka();
	wypisz();
ramka();


return 0;
}
void wypelnij() {
	for (int i = 0; i < maxx; i++) {
		for (int j = 0; j < maxy; j++) {
			td[i][j] = i * j;
					if (j==0){
			
				td[i][j]=i;
				}
				else if (i==0){
			
				td[i][j]=j;
				}

		}
	}


}
void wypisz() {
	for (int i = 0; i < maxx; i++) {
		for (int j = 0; j < maxy; j++) {
			wypiszw(td[i][j]) ;
	}
		cout << endl;
 }
}
int lcyfr( int l ){
	int k=0;
		while( l>=10 ){
	  	l=l/10;
		k++;		
	}
		return k;
}

void wypiszw(int w){
	int cyfry=lcyfr(w);
	cout<<w;
	
    	for (int l = 0; l < maxcyfr - cyfry; l++){
			cout<<" ";
			
		}
			
	
}
void ramka(){
	for(int j=0; j<maxy; j++){
			int cyfry=1;
				for(int l=0; l<cyfry ; l++ ){
				cout<<"*";
		


		}
		
	}
	cout<<endl;
}



na koniec dodam że widze błąd i dla maxx i maxy =10 musiałby się pokazywać 3 gwiazdki zamiast 1 ale nie wiem jak to zapisać żeby było równie dobrze dla maxx i maxy=100 lub dowolną liczbę.

komentarz 29 marca 2019 przez RafalS VIP (122,820 p.)

Jako ciekawostka. Jeśli dobrze się postarać to w pythonie da się to napisać w jednej linijce :D

print('\n'.join([''.join([f'{i*j:<{len(str(10 * 10)) + 1}}' for i in range(1, 11)]) for j in range(1, 11)]))

 

1 odpowiedź

0 głosów
odpowiedź 4 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)
Napisz jakiego dokładnie wyniku oczukujesz.

Podaj przykład.

Podobne pytania

0 głosów
1 odpowiedź 2,051 wizyt
0 głosów
1 odpowiedź 905 wizyt
pytanie zadane 12 listopada 2020 w C i C++ przez Fuszion74 Początkujący (310 p.)
0 głosów
2 odpowiedzi 475 wizyt
pytanie zadane 10 stycznia 2018 w C i C++ przez Sansi Użytkownik (720 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...