Avatar billede venja Nybegynder
11. april 2003 - 17:08 Der er 19 kommentarer og
2 løsninger

samle flere arraypladser i én int

Jeg har et array med eksempelvis tallet 5706 fordelt over 4 pladser, hvordan får jeg tallet samlet igen ?
Avatar billede venne Nybegynder
11. april 2003 - 17:10 #1
Overhovedet ikke forstået?!

/venne
Avatar billede venja Nybegynder
11. april 2003 - 17:15 #2
ok.. 

int tal[5];
tal[0]=5;
tal[1]=7;
tal[2]=0;
tal[3]=6;
tal[4]=\0;


de 4 første pladser vil jeg gerne trække sammen så der i stedet står 5706 i én variabel
Avatar billede venne Nybegynder
11. april 2003 - 17:18 #3
Mener du:

samlet = tal[0] * 1000
      + tal[1] * 100
      + tal[2] * 10
      + tal[3];

...eller?

/venne
Avatar billede simonvalter Praktikant
11. april 2003 - 17:21 #4
jeg tror han mener de skal sættes sammen som en string .. ..(jeg kender kun java)

men det ville være noget i retning af String s = ""+tal[0]+tal[1].....
senere kan man så lave den til int
Avatar billede venja Nybegynder
11. april 2003 - 17:22 #5
nej, uanset hvad der står i et array vil jeg bare gerne tage de tal der står på de enketle pladser og sætte dem efter hianden i en ny variabel således at dt ikke længere er et array men en int
Avatar billede simonvalter Praktikant
11. april 2003 - 17:25 #6
det vil jeg da stadig mene du kan gøre med en string

en for løkke hvor du smider dem i en string indtil der ikke er mere i arrayet ..
og skal du så bruge dem som int så laver du string til int .. eller er det kun noget du kan i java?
Avatar billede venja Nybegynder
11. april 2003 - 17:26 #7
jeg prøver lige-...
Avatar billede soreno Praktikant
11. april 2003 - 18:04 #8
Avatar billede simonvalter Praktikant
11. april 2003 - 18:39 #9
øhh ...
jeg er ikke sikker på at det er det her du vil have ..
men det ser ud til at virke .. (Wee mit første c++ program :) )

#include <iostream>
#include <strstream>
using namespace std;

int main()
{
int tal[6];
tal[0]=5;
tal[1]=7;
tal[2]=0;
tal[3]=6;
tal[4]=4;
tal[5]=0;
int i = 5;
strstream strm;
string str;

int len = sizeof(tal) / sizeof(int);

for (int i = 0; i < len; i++)
{
strm << tal[i];
}

strm >> str;
cout << str; 
return 0;
}
Avatar billede simonvalter Praktikant
11. april 2003 - 18:40 #10
jeg kan prøve og kigge på om man kan lave det om til int igen o smide det ind i et nyt array
Avatar billede simonvalter Praktikant
11. april 2003 - 18:42 #11
glem int i = 5; .. det var fra et tidligere forsøg
Avatar billede simonvalter Praktikant
11. april 2003 - 18:56 #12
ok .. det er sikkert en gang slamkode men nu laver den det om til int og den smider det oxo i et array igen ..
håber du kan bruge det til noget ;)

#include <iostream>
#include <strstream>
#include <sstream>

using namespace std;

int main()
{
int tal[6];
tal[0]=5;
tal[1]=7;
tal[2]=0;
tal[3]=6;
tal[4]=4;
tal[5]=0;

strstream strm;
string str;

int len = sizeof(tal) / sizeof(int);

for (int i = 0; i < len; i++)
{
strm << tal[i];
}

strm >> str;

istringstream is(str);
int i;
is >> i;

cout << i << "\n";

cout << i+1;
int sammensattal[1];
i >> sammensattal[0];

return 0;
}
Avatar billede simonvalter Praktikant
11. april 2003 - 19:02 #13
hov der var en lille fejl
i >> sammensattal[0];
skal være

sammensattal[0] = i;
Avatar billede simonvalter Praktikant
11. april 2003 - 19:04 #14
nogen der kan fortælle mig hvordan man gør det ordenligt ?? det ville være rart at vide hvor tæt på jeg er på en ordenlig løsning..  :)
Avatar billede chadi_a Nybegynder
11. april 2003 - 19:31 #15
#include <iostream>

using namespace std;

int main(){

int i;
int a;
int tal[5];

tal[0]=5;
tal[1]=7;
tal[2]=0;
tal[3]=6;
tal[4]=4;

for (i = 0; i < 5; i++)
  cout << tal[i];


system("Pause");
return 0;
}

Det skulle gerne virke!
Avatar billede simonvalter Praktikant
11. april 2003 - 19:42 #16
der printer du jo bare talene ud et efter et
Avatar billede simonvalter Praktikant
11. april 2003 - 19:43 #17
du har jo ikke et tal du kan arbejde mere med .. feks ligge 5 til tallet eller komme det i et nyt array
Avatar billede arne_v Ekspert
11. april 2003 - 22:39 #18
Efter min bedste overbevisning var venne's løsning rigtig !

#include <iostream>

using namespace std;

int main()
{
  int tal[6];
  tal[0]=5;
  tal[1]=7;
  tal[2]=0;
  tal[3]=6;
  tal[4]=4;
  tal[5]=0;
  int i = tal[0]*100000+tal[1]*10000+tal[2]*1000+tal[3]*100+tal[4]*10+tal[5];
  cout << i << endl;
  return 0;
}

er vist noget nemmere.

Hvis man endelig skal omkring string ville jeg lave det som:

#include <iostream>
#include <string>

#include <stdlib.h>

using namespace std;

int main()
{
  char tmp[2];
  int tal[6];
  tal[0]=5;
  tal[1]=7;
  tal[2]=0;
  tal[3]=6;
  tal[4]=4;
  tal[5]=0;
  string is = "";
  for(int j=0;j<6;j++) is = is + itoa(tal[j],tmp,10);
  int i = atoi(is.c_str());
  cout << i << endl;
  return 0;
}

NB: itoa er ikke standard, men de fleste systemer har den dog nok.
Avatar billede simonvalter Praktikant
11. april 2003 - 22:50 #19
ok smart ;)
Avatar billede simonvalter Praktikant
11. april 2003 - 22:52 #20
jeg læste godt om den itoa men forstod den ikke lige
Avatar billede venja Nybegynder
12. april 2003 - 16:00 #21
Tak alle sammen... - jeg er næsten ked af det lille point-niveau efter alt det arbejde jeg har rodet jer ud i....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester