Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: taulukoista

cloudi [16.01.2004 19:36:41]

#

tietäskös joku tämmösestä, että kun on 2 kokonaisluku-taulukkoa: ja pitäs kolmanteen tauluun laskea tulos, et kuinka monta kertaa t1:n kukin alkio esiintynyt t2:ssa.

kiitollinen jelpistä ..!

sooda [16.01.2004 20:34:33]

#

varmaankin jotenkin näin...

int koko;
koko=100;
int t1[koko],t2[koko],13[koko];
// tässä sitten sijoitellaan noi t1 ja t2 arvot...
int i,j;
for(i=0;i<koko;i++)
    for(j=0;j<koko;j++)
        if(t1[i]==t2[j])
            t3[i]++;

toki ton hässäkän saa myös yhdelle riville... tulisi vähän sotkuinen :D

Antti Laaksonen [16.01.2004 22:22:06]

#

Tässä on toimiva koodi. Taulukossa t1 on kaikki eri luvut ja taulukosta t2 lasketaan lukujen esiintymiskerrat. Tulokset laitetaan t3-taulukkoon. t1:n ja t3:n indeksoinnit vastaavat siis toisiaan.

#include <stdio.h>

int main(void) {
    int t1[3] = {1, 2, 3};
    int t2[10] = {1, 2, 1, 1, 3, 2, 1, 2, 2, 3};
    int t3[3] = {0};
    int i, j;
    /* käydään läpi kaikki eri luvut */
    for (i = 0; i < 3; i++)
        /* käydään läpi tutkittava lukujoukko */
        for (j = 0; j < 10; j++)
            /* jos luvut ovat samat, */
            if (t1[i] == t2[j])
                /* kasvatetaan lukumäärätaulukon arvoa */
                t3[i]++;

    /* tulostetaan tiedot */
    for (i = 0; i < 3; i++)
        printf("Alkio %i esiintyy %i kertaa\n", t1[i], t3[i]);
}

cloudi [19.01.2004 12:21:53]

#

kiitti paljon aiemmist vastauksist!

ny ois tällanen tyrimys tyrkyllänsä: eli mis moka, mix en hoxi, mis hiiskatissa mättää

#include <iostream.h>
const int N=2;

main(void)
{
 int Kierros=0;
 int taulu [N][N];



while(Kierros<1 ){       //esim.2, jos kahden käyttäjän tuloks. kysyis
int *Pienin=&taulu[0][0];
int *Suurin=&taulu[0][0];
int Luku=0;


cout<<"Anna luvut: ";
for(int Rivi=0;Rivi<N;Rivi++)
	for(int Sarake=0;Sarake<N ;Sarake++) {
   cin>>Luku;
	   taulu [Rivi][Sarake]=Luku;

if (taulu [Rivi][Sarake] < *Pienin)
Pienin = &taulu[Rivi][Sarake];

if (taulu [Rivi][Sarake] > *Suurin)
Suurin = &taulu [Rivi][Sarake];
}


cout<<"\n";
cout<<"Pienin: "<<  *Pienin <<endl;
cout<<"Suurin: "<<  *Suurin<<endl;
Kierros=Kierros+1;
}

cout<<"\nTulostus: ";
for(int Rivi=0;Rivi<N;Rivi++)
	for(int Sarake=0;Sarake<N ;Sarake++)
cout<<taulu[Rivi][Sarake]<<" ";

int siirto,vaihto;
int Rivi1 ;
int Sarake1=1;
int Rivi2=1;
int Sarake2=1;

for(Rivi1=1 ;Rivi1<N+1;Rivi1++)

  //Sarake1=1;

  for(  Sarake1=1;Sarake1<N ;Sarake1++)   {

    siirto=0;

for(  Rivi2=Rivi1;Rivi2<N;Rivi2++)
{
    if(siirto=0){
      Sarake2=Sarake1+1;
      siirto=1;
	}
    else Sarake2=1;

	for( ;Sarake2<N  ;Sarake2++)

		if(taulu[Rivi1][Sarake1]>taulu[Rivi2][Sarake2])
		{

        vaihto=taulu[Rivi1][Sarake1];
        taulu[Rivi1][Sarake1]=taulu[Rivi2][Sarake2];
        taulu[Rivi2][Sarake2]=vaihto;
		//siirto++;
		}
	}
  }

cout<<"\nTulostus lajittelun jalkeen: ";

for(  Rivi=0;Rivi<N;Rivi++)
	for(int Sarake=0;Sarake<N ;Sarake++)
cout<<taulu[Rivi][Sarake]<<" ";
cout<<endl;
return 0;
}

cloudi [24.01.2004 11:36:36]

#

-vaikken täs oo ketää jelppaillu (ku en oo osanna) -- niin voisko joku silti help me??

tämän threadin alus oli toi 3:een taulukkoon esiint.kertojen laskeminen -ookke-
.. eli samast asiasta nytkin kyse, muutta ku en tajjuu millään funktiossa static-taulukkoa. (<=sinne jäis siis tietoo funktion-suor. jälkeen)

(jos ite funktiossa sais tulostaa, niin onnistus, mutta ku pitää pal. osoite pääohjelmaan ja tulostaa siellä. ja hyveeksi katsotaan sellanenki ku laske-funktio viel erikseen ... )

#include <iostream>
using namespace std;

const int N=5;

//globaalit staattisia, autom. nollalla alust.

int * vertaa(int taulu1[], int taulu2[]);

int  laske(   int result[]);  //,int c);


int main()
{

    int test[N] = {1, 2, 3, 4, 7};
    int data[10] = {1, 1, 1, 1, 3, 3, 3, 2, 2, 2};


         for (int  i = 0; i < N; i++)
         printf("Alkio %i esiintyy %i kertaa\n", test[i], *vertaa(test,data) );
	  //eli ykköstä vaan kerryttää...

       return 0;
}

int * vertaa(int taulu1[], int taulu2[])
{
    static int result[10];// = {0};    //STATIC-taulu  TÄNNE JÄÄ ED. YKKÖSEN JUTUT
                                       //funktion jälkeen tänne pitääki jäädä jotai..
    int i, j;

	for (i = 0; i < 5; i++)

         for (j = 0; j < 10; j++)
             if (taulu1[i] ==  taulu2[j])
			 {
				 result[i]++;
			 }


	      //for (  i = 0; i < 5; i++)     //tää tulostus onnistuis kyllä
          //printf("Alkio %i esiintyy %i kertaa\n", taulu1[i], result[i]);

	return  result;     ;
}


 /*int laske(int result[] )
 {
	 ------------------
	 return  result[i];
 }*/

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta