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

porownanie liczb

Object Storage Arubacloud
0 głosów
574 wizyt
pytanie zadane 17 kwietnia 2020 w C i C++ przez lujasjeden Użytkownik (860 p.)
Witam, od razy zaznaczam, że np. cyfra nr 1 nie koniecznie =1 tylko może przyjmować wartości od 1-9 (cyfra nr 1-9 to nazwy ktore przyjmuja wartosci 1-9) Czy ma ktoś jakiś sposób/pomysł żeby w sprytny sposób napisać, że cyfra numer 1 jest różna od cyfry nr 2, cyfry nr 3...cyfry nr 9 i tak samo dla wszystkich przypadków, że cyfra nr 2 jest różna od cyfry nr 3, cyfry nr 4, cyfry nr 5...cyfry nr 9, i analogicznie cyfra nr 3 jest rozna od cyfry nr 4, cyfry nr 5...cyfry nr 9  i tak aż do 9 w sumie no po prostu chodzi mi o to zeby kazde pole od 1-9 mialo inna wartosc. Oczywiscie moge napisac te 45 warunkow tylko ze problem jest takie ze bedzie 9 rzedow 9 kolumn no i 9 kwadratow 3x3 ktore bedzie trzeba okodowac w ten sam sposob (sudoku) no a to juz ogrom pracy ktore mozna skrocic jezeli sie da

Probowalem w ten sposob:

cyfra1!=cyfra2!=cyfra3!=cyfra4!=cyfra5!=cyfra6!=cyfra7!=cyfra8!=cyfra9

ale nie działa, może jest jakiś inny zapis tego co mam na mysli.

3 odpowiedzi

+1 głos
odpowiedź 18 kwietnia 2020 przez amelia.cpp Obywatel (1,860 p.)

Możesz spróbować coś takiego

   bool theSame = false;
 for (int i = 0; i < 9; i++){          
        for (int j = i+1; j < 9; j++){
            if (cyfra[i]==cyfra[j]){      
                theSame = true;
            }
        }
    }
    
    cout << theSame;
komentarz 20 kwietnia 2020 przez lujasjeden Użytkownik (860 p.)
Dobra dzieki za wszystko raz jeszcze, jak bys dala rade wykminic warunek na sume kwadratow w petli to by bylo spoko ale jak nie to tez luz ja moze poradze sobie sam a jak nie to recznie to wszystko przyrownam to juz duzo nie zostanie.
 

Dziekuje za cala pomoc.
komentarz 21 kwietnia 2020 przez lujasjeden Użytkownik (860 p.)

@amelia.cpp, napisalem wzorujac sie na twoich kodach cos takiego ale mam pare pytan

Kod na zgodnosc sumy w kwadratach:

int sumaSqrt=0;
bool wszystkieSumySqrt=true;
for (int k=0; k<9; k+=3;{
       for (int w=0; w<9; w+=3;{
             for (int i=w; i<w+3; i++){
                   for (int j=k+1; j<k+3; j++){
                         sumaSqrt=cyfra[i][k]+cyfra[i][j]
                         if (sumaSqrt!=45){
                              wszystkieSumySqrt=false;
                              }
                              sumSqrt=0;
                              }

Czy to czasami nie policzy mi tylko np sumy pól 1+2+3 i 4+5+6 i 7+8+9 i 10+11+12 itd?

Czy nie musze napisac jeszcze np jakiejs petli zeby wykonala sie trzy razy zeby zsumowac pola 1+2+3+10+11+12+19+20+21?

Bo [i] to wszystkie wiersze tak? k to kolumny 1, 4, 7 a j to kolumny 2,3, 5,6 8,9 tak?

No i bedzie wykonywac sie np dla i=0 i k=0 suma [0][0]+[0][1]+[0][2] i nastepne juz osobno, ze i=0, k=3 suma [0][3]+[0][4]+[0][5] (?)

1
komentarz 21 kwietnia 2020 przez amelia.cpp Obywatel (1,860 p.)

Przeanalizuj ten kod

	int sumaSqrt = 0;
	bool wszystkieSumySqrt = true;
	for (int k = 0; k < 9; k += 3) { //trzy ściany kwadratu (y)
		for (int w = 0; w < 9; w += 3) { //trzy ściany kwadratu (x)
			for (int i = w; i < w + 3; i++) { //poruszanie się w wierszach
				for (int j = k; j < k + 3; j++) { //poruszanie się w kolumnach
					sumaSqrt += cyfra[i][j]; //zwróć uwagę na +=
				}
			}
			std::cout << sumaSqrt << std::endl; //opcjonalnie
			if (sumaSqrt != 45) {
				wszystkieSumySqrt = false;
			}
			sumaSqrt = 0;
		}
	}
}

 
Tutaj taka wizualizacja. Liczby w kwadratach oznaczają kolejność dodawania, np. kwadrat z liczbą 2 oznacza cyfre dodaną jako drugą

komentarz 22 kwietnia 2020 przez lujasjeden Użytkownik (860 p.)
edycja 22 kwietnia 2020 przez lujasjeden
dziekuje wszystko dziala jak nalezy jestes Wielka!
1
komentarz 22 kwietnia 2020 przez amelia.cpp Obywatel (1,860 p.)
Nie ma za co, dzięki za komplement ;) , do usług
0 głosów
odpowiedź 17 kwietnia 2020 przez DeBos123 Nałogowiec (44,950 p.)
–3 głosów
odpowiedź 17 kwietnia 2020 przez Mateusz Bartczak Użytkownik (610 p.)
#include <iostream>

using namespace std;

int main()
{
    int cyfra[9];   //tablica cyfr

    for(int i = 0; i < 9; i++){        //dodanie cyfr do tablicy
        cyfra[i]=i;
    }

    cyfra[7]=5;         //ustawienie cyfry nr 7 na wartość 5


    for (int i = 0; i < 9; i++){            //cały algorytm sprawdzający
        for (int j = 0; j < 9; j++){
            if (cyfra[j]==cyfra[i]&&j!=i){      //tu wstaw w if co chcesz
                cout<<cyfra[j];
            }
        }
    }

    return 0;
}

 

komentarz 18 kwietnia 2020 przez lujasjeden Użytkownik (860 p.)
nie dokonca chce dodac liczby do tablicy w kolejnosci 1-9, gra polega u mnie na tym ze po kliknieciu na image 1-9 przypisuje sie do zmiennej char value wartosc od "a" do "l" na klawiaturze i po kliknieciu na dane pole z 81 dajmy na to ze na 1 to if value=='a' wczytuje zdjecie 1 i ustawiam wartosc int cyfra1 na 1 analogicznie dla klikniecia 2 value='s' i na kliknieciu pola np 1 if value=='s' wczytuje zdjecie co przedstawia 2 narysowana i wpisuje wartosc cyfra1=2. No i tak na wszystkie pola no a warunki sprawdzajace czy wygrales to czy cyfra1+cyfra2+...cyfra9==45  &&  cyfra10+cyfra11...cyfra18 ==45 i tak kazdy rzad i kazda kolumne i 9 kwadratow 3x3 && kazda liczba w kolumnie, rzedzie jest rozna i wlasnie o to mi chodzi jak to zapisac zeby wyszlo jak najmniej pisania. Moze rozjasnilem sytuacje troche i zwizualizowalem co nie.
1
komentarz 18 kwietnia 2020 przez Mateusz Bartczak Użytkownik (610 p.)

a przepraszam, nie zrozumiałem dobrze, w takim razie można sprawdzać to w pętlach, tu podałem sposób na te twoje cyfra1+cyfra2... = 45

ale to nie działa przeanalizuj proszę 456456456 :)

wklejam kodzik do kolumn i wierszy kwadratów mi się już nie chciało

int cyfra[81];   //tablica cyfr
    int b=1;
    for(int i = 0; i < 81; i++){        //dodanie cyfr do tablicy
        if(b==10){
            b=1;
        }
        cyfra[i]=b;
        b++;
    }
    int suma;
    for (int i = 0; i < 81; i+=9){
        suma=0;
        for (int j = 0; j < 9; j++){
            suma+=cyfra[i+j];
        }
        if(suma==45){
            cout<<"Tak"<<endl;
        }
        else{
            cout<<"Nie"<<endl;
        }
    }
    for (int i = 0; i <= 9; i++){
        suma=0;
        for (int j = 0; j < 81; j++){
            suma+=cyfra[i+j];
        }
        if(suma==45){
            cout<<"Tak"<<endl;
        }
        else{
            cout<<"Nie"<<endl;
        }
    }

 

komentarz 18 kwietnia 2020 przez lujasjeden Użytkownik (860 p.)
dzieki, co oznacza b?
komentarz 22 kwietnia 2020 przez Mateusz Bartczak Użytkownik (610 p.)
przypisywanie od 1 do 9 ;)

Podobne pytania

0 głosów
0 odpowiedzi 132 wizyt
pytanie zadane 14 stycznia 2017 w Matematyka, fizyka, logika przez KeiRullez Nowicjusz (120 p.)
0 głosów
1 odpowiedź 472 wizyt
+1 głos
1 odpowiedź 606 wizyt
pytanie zadane 23 października 2021 w PHP przez stanislawruszkowski Obywatel (1,310 p.)

92,757 zapytań

141,679 odpowiedzi

320,437 komentarzy

62,101 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...