Mnożenie kolejnych liczb tablicy przez inne wartości

0

Mam tablice z pewnym numerem skladajacym sie z 11-nastu liczb, teraz:

Pierwszą cyfrę mnożymy przez 1,
drugą cyfrę mnożymy przez 3,
trzecią cyfrę mnożymy przez 7,
czwarta cyfrę mnożymy przez 9,
piątą cyfrę mnożymy przez 1,
szóstą cyfrę mnożymy przez 3,
siódmą cyfrę mnożymy przez 7,
ósmą cyfrę mnożymy przez 9,
dziewiątą cyfrę mnożymy przez 1,
dziesiątą cyfrę mnożymy przez 3,
jedenastą cyfrę mnożymy przez 1.

Nie wiem do konca jak to zrobic

1

Do mnożenia służy operator *

0

Musisz umieć tablice oraz pętle for. Zakładam że operatory mnożenia i dzielenia modulo kojarzysz :)
Robisz tablicę z cyframi oraz tablicę o rozmiarze 4 z tymi mnożnikami [1,3,7,9].
Następnie iterujesz pętlą for po pierwszej tablicy, przy okazji wyświetlając na ekranie wynik mnożenia

printf("%d", tablica[i] * tablicaMnoznikow[i%4])

</del> Pomyliłem się :( założyłem że 11 cyfrę mnożymy przez 7, a jest 1. Po prostu 2 tablice takiego samego rozmiaru z cyframi i mnożnikami i bez modulo w mnożeniu.

0

@Zellus
Zauważ, że w każdej czwórce są inne mnożniki

Wg mnie trzeba hardkodować tablicę mnożników i po prostu ręcznie przemnożyć

0

Usiłowałem się doszukać tutaj jakiegoś magicznego wzoru ale chyba nic takiego tutaj nie ma:

Pozostaje tylko:

#include<stdio.h>

int main(){
	int tablica[] = { 0,1,2,3,4,5,6,7,8,9,10 };
	int mnozniki[] = { 1,3,7,9 };
	int rozmiar = sizeof(tablica) / sizeof(tablica[0]);
	for(int i = 0; i < rozmiar - 1; ++i){
		tablica[i] *= mnozniki[i % 4];
		printf("%d ", tablica[i]);
	}
	printf("%d\n", tablica[rozmiar - 1]);
	return 0;
}
0

okej napisalem tak:

#include<stdio.h>

int main(void){
  int tab[10],mtab[]={1,3,7,9,1,3,7,9,1,3,1};
  int a;
  for(int i=0;i<11;++i)
    scanf("%i",&tab[i]);

  for(int i=0;i<11;++i)
    tab[i]=tab[i]*mtab[i];

  for(int i=0;i<11;++i)
    a=a+tab[i];

  if(a%10==0){
    printf("T");
  }
  else{
    printf("N");
  }
  return 0;
}

zadanie jest takie zeby do tego programu podawac pesel i potem to wykonuje te operacje mnozenia i dodaje wszystko do siebie i jesli na koncu jest 0 to pesel jest prawidlowy a jesli nie ma zera to bledny, i ten program nie dzial poprawnie, moglby ktos zkorektowac ?

0

Nie zerujesz sumy na poczatku

int a = 0;
0

okej teraz zeruje, podaje 11 liczbowy pesel i program sie nie konczy, nie idzie do funkcji printf

1

Bo w ogóle za dużo masz tutaj tego wszystkiego. Za dużo masz tych pętli, bo to się wszystko da obliczyć w jednej:

#include<stdio.h>

int main(){
	int tablica[] = { 0,1,2,3,4,5,6,7,8,9,10 };
	int mnozniki[] = { 1,3,7,9,1,3,7,9,1,3,1 };
	int rozmiar = sizeof(tablica) / sizeof(tablica[0]);
	int suma = 0;
	for(int i = 0; i < rozmiar; ++i){
		tablica[i] *= mnozniki[i];
		suma += tablica[i];
	}
	if(suma % 10) printf("Nieprawidłowy");
	else printf("Ok");
	return 0;
}

Jak chcesz ręcznie wpisywać wartości to zrób int tablica[11]; i w pętli przed tablica[i]*=mnozniki[i] zrób sobie scanf.

0

mam teraz cos takiego:

#include<stdio.h>
 
int main(){
  int tablica[]={0,1,2,3,4,5,6,7,8,9,10};
  int mnozniki[]={1,3,7,9,1,3,7,9,1,3,1};
  int rozmiar = sizeof(tablica) / sizeof(tablica[0]);
  int suma =0;
  for(int i=0;i<rozmiar;++i){
    scanf("%i",&tablica[i]);
    tablica[i]*=mnozniki[i];
    suma+=tablica[i];
  }
  if(suma%10)printf("Nieprawidłowy");
  else printf("Ok");
  return 0;
}

Ale wpisuje ten pesel i program nie idzie do funkcji printf... co jest zle ?

0

Ten... program... działa...

https://ideone.com/x97oR1

0

Nie wiem jak ci dziala, ja wpisuje pesel i program nie idzie do printf.... a mam skopiowany dokladnie, probowalem tez zamknac program C-c ale tylko zamyka program bez outputu...

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