• 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
479 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 121 wizyt
pytanie zadane 14 stycznia 2017 w Matematyka, fizyka, logika przez KeiRullez Nowicjusz (120 p.)
0 głosów
1 odpowiedź 421 wizyt
+1 głos
1 odpowiedź 546 wizyt
pytanie zadane 23 października 2021 w PHP przez stanislawruszkowski Obywatel (1,310 p.)

92,555 zapytań

141,403 odpowiedzi

319,553 komentarzy

61,939 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...