Avatar billede mikl-dk Nybegynder
03. september 2002 - 18:52 Der er 33 kommentarer og
1 løsning

Addere tekst

Hej Eksperter!

Jeg har problemer:

char tekst;
int tal1 = 10;
int tal2 = 29;

tekst = tal1 . " " . tal2;

Det kan man gøre i php, men ikke i c... Hvordan gør jeg det??
Avatar billede medions Nybegynder
03. september 2002 - 18:57 #1
Hvad er det du vil?

tekst = tal1 & " " & tal2;

eller

tekst = tal1 & tal2

//>Rune
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:07 #2
eks:

char tekst;

for (int index = 0; index < 100; index++)
{
tekst = tekst && index;
}

Den skal altså tilføje noget til tekst, der allerede har en værdi...
Avatar billede medions Nybegynder
03. september 2002 - 19:10 #3
well det er jo

tal1 = tal1 + tal2

//>Rune
Avatar billede nak-m Nybegynder
03. september 2002 - 19:15 #4
ville nok være nemmere med:

tal1 += tal2
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:18 #5
Fejl:
Illegal use of floating point

Kode:
char primtal;
int start_tal = 0;

for (start_tal; start_tal < 100; start_tal++)
{
primtal = primtal + start_tal;
}

Den melder ikke fejl, men udskriver blot et 'N'....
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:18 #6
Ups - glem, at jeg skrev "Fejl:....".
Avatar billede nak-m Nybegynder
03. september 2002 - 19:21 #7
skal den udskrive nogle tal på skærmen?
Avatar billede dcgeek Nybegynder
03. september 2002 - 19:22 #8
void main()
{
  int tal1 = 10;
  int tal2 = 29;
  char text[100];
  text = tal1+tal2;
 
  cout<<text<<endl;
}
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:25 #9
Nej, den skal tilføje variablen start_tal til primtal. Og den skal ikke sættes lig med, da der findes nogle værdier i primtal, der skal beholdes. Næste gang løkken køres, skal start_tal (nu med en ny værdi) igen tilføjes til primtal..
Avatar billede nak-m Nybegynder
03. september 2002 - 19:32 #10
hvad med sådan her:

  char primtal = 3;
  int start_tal = 0;

  for (start_tal; start_tal < 100; start_tal++)
  {
    cout << primtal + start_tal << endl;
  }
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:33 #11
Så skriver man det bare ud...
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:33 #12
Det skal ikke skrives ud, men derimod tilføjes til en var...
Avatar billede nak-m Nybegynder
03. september 2002 - 19:38 #13
hvad for en var? hvis du gør det ved primtal ændres dens værdi jo? og det forrige tal bliver jo slettet hver gang du kører den loop igennem. hvad havde du tænkt dig at gøre helt præcist?
Avatar billede mikl-dk Nybegynder
03. september 2002 - 19:42 #14
1) 'primtal' defineres som en char
2) der køres en løkke, hvor 'start_tal' bliver en ny hver gang
3) i slutningen af denne løkke (inden den starter på en ny), skal 'start_tal' værdi tilføjes til 'primtal'.

Output for 'primtal':
1 2 3 4 5 6

F.eks.
Avatar billede nak-m Nybegynder
03. september 2002 - 20:00 #15
ja ok :)
Avatar billede nak-m Nybegynder
03. september 2002 - 20:02 #16
kan du så ikke bare gøre sådan her eller har jeg misforstået noget:

  char primtal;
  int start_tal;

  for (start_tal; start_tal < 100; start_tal++)
  {
    primtal += start_tal;
  }

?
Avatar billede mikl-dk Nybegynder
03. september 2002 - 20:02 #17
Har du en løsning?
Avatar billede nak-m Nybegynder
03. september 2002 - 20:03 #18
men hvorfor har du lavet primtal som en char når det er et tal?
Avatar billede mikl-dk Nybegynder
03. september 2002 - 20:06 #19
Nope, det virker ikke.
Avatar billede nak-m Nybegynder
03. september 2002 - 20:06 #20
hvad er det helt præcist der ikke virker?
Avatar billede mikl-dk Nybegynder
03. september 2002 - 20:07 #21
grunden til det er, at jeg vil have mellemrum eller et andet tegn imellem tallene, da de på den måde skal adskilles til senere brug...
Avatar billede nak-m Nybegynder
03. september 2002 - 20:16 #22
men hvorfor virker det ikke?
Avatar billede nak-m Nybegynder
03. september 2002 - 20:24 #23
?
Avatar billede mikl-dk Nybegynder
03. september 2002 - 20:55 #24
Det er som om, at primtal kun kan tage et tegn ind - og når den har gjort den, er det som om, at den konverterer tallet til et mærkeligt tegn...
Avatar billede nak-m Nybegynder
04. september 2002 - 07:15 #25
det er sikkert fordi at du skal skrive:

(int)primtal
Avatar billede nak-m Nybegynder
04. september 2002 - 07:16 #26
altså når du skal udskrive eller hvad du nu skal :)
Avatar billede mikl-dk Nybegynder
04. september 2002 - 08:18 #27
Eksempel? :)
Avatar billede soepro Nybegynder
04. september 2002 - 09:33 #28
Den nemmeste løsning er sprintf(), hvis det skal være standard C:

#include <stdio.h>
#include <conio.h>

int main(void)
{
  int tal1 = 127;
  int tal2 = 212;

  char tekst[25];
  // Flyt tal1 . " " . tal2 til tekst strengen.
  sprintf(tekst, "%d %d", tal1, tal2);

  cprintf("Teksten for tal1 <blank> tal2 er: %s\r\n", tekst);
  return 0;
}
Avatar billede nak-m Nybegynder
04. september 2002 - 10:06 #29
hva med noget i den stil? (selvom jeg er ret usikker på om det er sådan det skal virke!) :

char primtal;
  char start_tal;
  char result;

  for (start_tal; start_tal < 100; start_tal++)
  {
    result = primtal + start_tal;
    cout << (int)result << endl;
  }

?
Avatar billede soepro Nybegynder
04. september 2002 - 12:07 #30
Hvis din streng blot skal indeholde alle prim tallene mellem 3 og 100 i een tekst streng kan du gøre sådan her (isPrime() funktionen er op til dig at lave - den skal returnere en værdi forskellig fra 0, hvis tallet er et primtal):

#include <stdio.h>
#include <conio.h>

int isPrime(int tal) { /* Alle tal er primtal i mit eks. */ return 1; };

int main(void)
{
  char primtal[2049];
  int  pos;
  int  startTal;

  // Første primtal er 3 - og teksten skal starte i pos. 0
  for (startTal = 3, pos = 0; startTal < 100; startTal += 2)
  { // Ingen lige tal er primtal.
    if (isPrime(startTal))
      pos += sprintf(primtal+pos, "%d ", startTal);
  };

  // Så udskriv stengen.
  cputs(primtal);
  cputs("\r\n");
  return 0;
}
Avatar billede mikl-dk Nybegynder
04. september 2002 - 12:13 #31
Tak, prøver det lige, når jeg kommer hjem eller i aften...

/mikl.dk
Avatar billede killer_bee Nybegynder
04. september 2002 - 13:24 #32
hvis du bruge VC++ noget i stil med

CString text;
int tal1 = 10;
int tal2 = 20;

text.format("%d%d",tal1,tal2);

text vil være her "1020"
Avatar billede soepro Nybegynder
04. september 2002 - 14:05 #33
Jeg fandt samtidigt dette:

#include <windows.h>
#include <stdio.h>
#include <winioctl.h>

DISK_GEOMETRY SupportedGeometry[20];
DWORD SupportedGeometryCount;

VOID
GetSupportedGeometrys( HANDLE hDisk )

{
  DWORD ReturnedByteCount;

  if( DeviceIoControl(
          hDisk,
          IOCTL_DISK_GET_MEDIA_TYPES,
          NULL,
          0,
          SupportedGeometry,
          sizeof(SupportedGeometry),
          &ReturnedByteCount,
          NULL
      ))
      SupportedGeometryCount = ReturnedByteCount /  sizeof(DISK_GEOMETRY);

  else SupportedGeometryCount = 0;
}

VOID
PrintGeometry( PDISK_GEOMETRY lpGeometry )
{
  LPSTR MediaType;

  switch ( lpGeometry->MediaType ) {

      case F5_1Pt2_512:
        MediaType = "5.25, 1.2MB,  512 bytes/sector";
        break;
      case F3_1Pt44_512:
        MediaType = "3.5,  1.44MB, 512 bytes/sector";
        break;
      case F3_2Pt88_512:
        MediaType = "3.5,  2.88MB, 512 bytes/sector";
        break;
      case F3_20Pt8_512:
        MediaType = "3.5,  20.8MB, 512  bytes/sector";
        break;
      case F3_720_512:
        MediaType = "3.5,  720KB,  512 bytes/sector";

        break;
      case F5_360_512:
        MediaType = "5.25, 360KB,  512 bytes/sector";
        break;
      case F5_320_512:
        MediaType = "5.25, 320KB,  512 bytes/sector";
        break;
      case F5_320_1024:
        MediaType = "5.25, 320KB,  1024 bytes/sector";
        break;
      case F5_180_512:
        MediaType = "5.25, 180KB,  512 bytes/sector";
        break;
      case F5_160_512:
        MediaType = "5.25, 160KB,  512  bytes/sector";

        break;
      case RemovableMedia:
        MediaType = "Removable media other than floppy";
        break;
      case FixedMedia:
        MediaType = "Fixed hard disk media";
        break;
      default:
        MediaType = "Unknown";
        break;
  }
  printf("    Media Type %s\n", MediaType );
  printf("    Cylinders %d, Tracks/Cylinder %d, Sectors/Track %d\n",
          lpGeometry->Cylinders.LowPart, lpGeometry->TracksPerCylinder,
          lpGeometry->SectorsPerTrack

        );
}

void main( int argc, char *argv[], char *envp[] )
{
  HANDLE hDrive;
  UINT i;

  hDrive = CreateFile(
                  "\\\\.\\a:",
                  0,
                  FILE_SHARE_READ,
                  NULL,
                  OPEN_ALWAYS,
                  0,
                  NULL
                  );
  if ( hDrive == INVALID_HANDLE_VALUE )
  {
      printf( "Open failed: %d\n", GetLastError() );
      ExitProcess(1);

  }

  GetSupportedGeometrys( hDrive );

  printf( "\nDrive A supports the following disk geometries\n" );
  for( i=0; i<SupportedGeometryCount; i++ )
  {
      printf("\n");
      PrintGeometry( &SupportedGeometry[i] );
  }
  printf("\n");
}
Avatar billede soepro Nybegynder
04. september 2002 - 14:06 #34
Oops - forkerte sprøgsmål ! (http://exp.dk/spm/253937)
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