Avatar billede intel4ever Nybegynder
04. december 2003 - 15:13 Der er 8 kommentarer og
1 løsning

Variabler med comma tal og bogstaver

findes der en variabel, som kan indholde både tal med comma, og bogstaver.(muligvis newbie ?)

MVH René Kvist
Avatar billede ellebaek Nybegynder
04. december 2003 - 15:14 #1
string...
Avatar billede bromer Nybegynder
05. december 2003 - 17:38 #2
String er en C++ klasse som du kan benytte. Du kan ogsaa defineret en variable af typen char*, altsaa et char array..

/Rune
Avatar billede intel4ever Nybegynder
08. december 2003 - 07:52 #3
takker Jeg beder jer komme med et eksempel som jeg kan bruge i denne sammenhæng....
Avatar billede arne_v Ekspert
08. december 2003 - 08:05 #4
string s = "123  123.456 abc";

bemærk at string er med småt.
Avatar billede intel4ever Nybegynder
08. december 2003 - 08:26 #5
kan du ikke give et eksempel på et lille virkene program....jeg startede på c++ for få dage siden....
Avatar billede intel4ever Nybegynder
08. december 2003 - 09:09 #6
Her er mit problem, programmet virker, men hvis man indtaster et bogstave flipper den ud pga det er en double...hvordan kan man undgå det, jeg vil gerne give flere point for lidt hjælp M.V.H. René Kvist


//Opgave 6 Hvem er størst

#include <iostream>
#include <conio.h>


using namespace std;

int main()
{
   
   
    // Til at gemme Indtastninger-->
    double tal1;
    double tal2;
    double tal3;
    char i = 'y';
    // <--Til at gemme Indtastninger
   

    // Info-->
    cout << "Dette Program er udviklet til at finde udaf" << endl << "hvilket tal der er stoerst ud af 3 tal."
        << endl
        << endl
        << "Udviklet af FreeX-Studio"
        << endl
        << endl
        << endl;
    // <--Info

do
{
   
    // Indtastningerne -->
    cout << "Indtast 3 tal:" << endl;
    cin >>tal1;
    cin >>tal2;
    cin >>tal3;
    // <--Indtastningerne
   
   
    // hvis 2 tal er støre end det sidste-->
    if((tal1 == tal2) && (tal1 > tal3))
    {
        cout << "To tal var ens, de var: "<< tal1;
    }
   
    if((tal2 == tal3) && (tal2 > tal1))
    {
        cout << "To tal var ens, de var: " << tal2;
    }
   
    if((tal3 == tal1) && (tal3 > tal2))
    {
        cout << "To tal var ens, de var: " << tal3;
    }
    // <-- hvis 2 tal er støre end det sidste 
   
   

    // hvis alle tallene er lige store-->
    if((tal1 == tal2) && (tal1 == tal3))
    {
        cout << "alle tallene var ens, de var: " << tal1;
    }
    // <-- hvis alle tallene er lige store
   
   
   
    // Hvis 1 tal er størst-->
    if((tal1 > tal2) && (tal1 > tal3)) 
    {
        cout << endl << tal1 << " er det stoerste tal";
    }
   
    if ((tal2 > tal1) && (tal2 > tal3))
    {
        cout << endl << tal2 << " er det stoerste tal";
    }
   
    if ((tal3 > tal1) && (tal3 > tal2))
    {
        cout << endl << tal3 << " er det stoerste tal";
    }
    // <--Hvis 1 tal er størst
   


    // Løkke hvis bruger ønsker at udregne igen-->
    cout << endl
    <<"\nVil du lave en ny udregning (y/n)\n";
            do
            {
                i = getch();
            } 
            while ((i != 'n') && (i != 'N') && (i != 'y') && (i != 'Y'));

    cout << endl << endl;

    } 
    while ((i == 'y') || (i == 'Y'));
    // <--Løkke hvis bruger ønsker at udregne igen



return 0;
}
Avatar billede arne_v Ekspert
08. december 2003 - 12:54 #7
Du læser ind i en streng og checker om den indeholder et tal eller
der er bogstaver i.
Avatar billede arne_v Ekspert
08. december 2003 - 12:56 #8
Jeg formoder at du har styr på at indlæse en streng.

Det sidste kan du få lidt inspiration til her:

#include <stdlib.h>
#include <stdio.h>

void testi(char *s)
{
  int v;
  char *ep;
  v = atoi(s);
  printf("%s = %d\n",s,v);
  v = strtol(s, &ep, 10);
  if(ep > s)
  {
      printf("%s = %d\n",s,v);
  }
  else
  {
      printf("%s not number\n",s);
  }
}

void testfp(char *s)
{
  double v;
  char *ep;
  v = atof(s);
  printf("%s = %f\n",s,v);
  v = strtod(s, &ep);
  if(ep > s)
  {
      printf("%s = %f\n",s,v);
  }
  else
  {
      printf("%s not number\n",s);
  }
}

int main()
{
  testi("123");
  testi("abc");
  testfp("123.456");
  testfp("abc.def");
}
Avatar billede arne_v Ekspert
08. december 2003 - 12:58 #9
Så noget a la:

char line[30];
cin >> line;
char *ep;
double v = strtod(s, &ep);
if(ep > s)
{
    // det var et tal - brug v
}
else
{
    // det var ikke et tal - gør noget
}
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