Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Inny

c++ tablice

inny

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Index

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:3
Offline

Napisano 03.03.2016 18:51

Witam

 

Wczytuje sobie do tablicy dwuwymiarowej [100][3] liczby w ten sposób:

	for(i=0;i<3;i++)
    	    for(j=0;j<3;j++)
    	       odczyt>>tab[i][j];				
				

są to kolejno w wierszu bok prostokąta, bok2 prostokąta, pole prostokąta

 

Potrzebuje teraz znaleźć wszystkie prostokaty o najmniejszym polu. Następnie wynik wypisać w postaci bok prostokąta, bok2 prostokąta, pole prostokąta. Każdy w osobnych wierszach na końcu podać liczbę tych prostokątów o najmniejszym polu.

 

Próbowałem posortować kolumnę z polami ale wtedy tablica się miesza i nie można znaleźć boków.

Ma ktoś jakiś pomysł jak to zrobić?


Użytkownik Index edytował ten post 03.03.2016 18:57

  • +
  • -
  • 0

#2 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 03.03.2016 20:24

Napisz sobie funkcję sortującą, która dodatkowo będzie zamieniała pola z bokami prostokątów.


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#3 mastah7991

    Wszechpomocny

  • Użytkownik

Reputacja: 154
Profesjonalista

  • Postów:388
  • Lokalizacja:Polska
Offline

Napisano 03.03.2016 21:44

Witam

 

Wczytuje sobie do tablicy dwuwymiarowej [100][3] liczby w ten sposób:

	for(i=0;i<3;i++)
    	    for(j=0;j<3;j++)
    	       odczyt>>tab[i][j];				
				

są to kolejno w wierszu bok prostokąta, bok2 prostokąta, pole prostokąta

 

Potrzebuje teraz znaleźć wszystkie prostokaty o najmniejszym polu. Następnie wynik wypisać w postaci bok prostokąta, bok2 prostokąta, pole prostokąta. Każdy w osobnych wierszach na końcu podać liczbę tych prostokątów o najmniejszym polu.

 

Próbowałem posortować kolumnę z polami ale wtedy tablica się miesza i nie można znaleźć boków.

Ma ktoś jakiś pomysł jak to zrobić?

próbna matura ? xD

 

nie trzeba nawet sortować a raz wystarczy przejechać po tablicy.

na próbnej zrobiłem to mało optymalnie (lecz Ci podam co wymyśliłem bo to jest aż śmieszne )

lecisz po tabicy uznając pole prostokąta 0 za najmniejsze i wypisujesz je do pola.

dodatkowo tworzysz cos co będzie za licznik ile takich jest.

lecisz po nastepnej jesli

jest mniejsz to -> czyscisz plik wpisujesz nowe wartosci, licznik ustawiasz na 1;

jesli wieksze omijasz 

jesli takie samo -> dopisujesz do pliku licznik ++;

 

po zakonczeniu wypisujesz w nowej lini licznik;p

 

 

P.s lepiej użyj tablicy dynamicznej. zlicz ile masz wierwszy potem ustaw wielkosć tablicy na taką co Ci potrzeba.

pamiętaj że robisz program który ma działać ZAWSZE. teraz gdyby było np 3000 wpisów uzyskasz coś niewiarygodnego.

 

p.s2 sortowanie bąbelkowe bo raczej to byłoby użyte przy 1000 danych moze już długo działać dlatego moze moja wersja będzie nawet szybsza ( tyle ze plik czesto otwieramy z parametrem kasowanai)
 


Użytkownik mastah7991 edytował ten post 03.03.2016 21:50

  • +
  • -
  • 0

#4 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 03.03.2016 22:51

// Example program
#include <iostream>
#include <string>

int main()
{
    int tab[100][3];
    int najmniejszyTrojkat=0;
    int ile=0;
    /*ponieżej pętla do zapełnienia tablicy danymi,
    * zerowe oraz co 11 miejsce zapelniam takim samym mniejszym od reszty trójkątem
    * odkomentuj ją sobie jak potrzebujesz potestować*/
    /*
    tab[0][0]=3;
    tab[0][1]=4;
    tab[0][2]=12;
    for(int a=1;a<100;a++)
    {
        if(a%11==0)
        {
            tab[a][0]=3;
            tab[a][1]=4;
            tab[a][2]=12;
        }
        else
        {
            tab[a][0]=5;
            tab[a][1]=6;
            tab[a][2]=30;
        }
    }*/
    for(int i=1;i<100;i++) 
    {
        if(tab[i][2]<tab[najmniejszyTrojkat][2])
        {
            najmniejszyTrojkat=i;
            ile=1;
        }
        else if(tab[i][2]==tab[najmniejszyTrojkat][2])
        {
            ile++;
        }
    }
    for(int a=100;ile>0;a--)
    {
      if(tab[a][2]==tab[najmniejszyTrojkat][2])//trojkat o tym indexie jest rowny polem z najmniejszym
      {
          ile--;
        //Tu sobie wypisz 
        std::cout << "Najmniejszy trojkat, index w tablicy:" << a << " ,bok:" << tab[a][0] << " drugi bok:" << tab[a][1] << " pole:" << tab[a][2] <<"\n";
      }
    }
}
 

Użytkownik grankee edytował ten post 04.03.2016 00:06

  • +
  • -
  • 1

#5 Index

    Nowy

  • Autor tematu
  • Nowy

Reputacja: 0
Nowy

  • Postów:3
Offline

Napisano 06.03.2016 20:19

Poradziłem sobie już z pomocą innych no ale warto rozszerzyć temat chyba.

Posortować ostatnią kolumnę spoko ale jak posortować wiersze po ostatniej kolumnie?

Dlaczego program do matury musi działać zawsze? Nie mogę sobie zobaczyć w Excelu ile ma wierszy i pod te dane pisać kod?

tutaj moje rozwiązanie:

 


		        for(i=0;i<n;i++)
    			        for(j=0;j<3;j++)
    				       odczyt>>tab[i][j];
									
			int min=tab[0][2];	
			for(i=0;i<n;i++)
				if(tab[i][2]<min)
					min=tab[i][2];
						
			for (i=0; i<n; i++) 
        		        if(tab[i][2] == min){
         	   		wynik1<<tab[i][0]<<" "<< tab[i][1]<<" "<<min<<endl;
            		        ile++;
          	 	        }
           	wynik1<<ile;
    	

Użytkownik Index edytował ten post 06.03.2016 20:23

  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: inny

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych