Avatar billede jesperkm Nybegynder
10. april 2005 - 20:50 Der er 7 kommentarer og
1 løsning

Dos prompten lukker ned lige når den åbner.

Hejsa, jeg hentede et program (exe) -fil, hvor den skulle vise noget i en dos-promt, men den går ned lige når jeg har åbnet den.

Koden er :


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

char validchars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVXYZÆØÅabcdefghijklmnopqrstuvxyzæøå!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~£¤§¨´½";
char s[256];
int results, searchvalue, maxiterations;
FILE *fp;

int convert(char *s)
{
    int i, len, factor, room;
   
    len = strlen(s);
    factor = 1;
    room = 0;
    for(i = len - 1; i >= 0; i--)
    {
        room += (s[i] - '0') * factor;
        factor *= 10;
    }
    return room;
}

int rekurs(int iteration)
{
    char x;

    if(iteration < maxiterations)
    {
        iteration++;
        x = 0;
        while(validchars[x])
        {
            s[iteration - 1] = validchars[x];
            rekurs(iteration);
            s[iteration] = '\0';
            if(convert(s) == searchvalue)
            {
                int i = 0;

                results++;
                while(s[i])
                    putc(s[i++], fp);
                putc('\n', fp);
                printf("\r  %d", results);
            }
            s[iteration - 1] = '\0';
            x++;
        }
    }
    return 0;
}

int main(int a, char *s[])
{


    if(a == 3 && strcmp(s[1], "-c") == 0)
    {
        printf("  Converting:\n úÄÄÄÄÄÄÄÄÄÄÄú\n  \"%s\" equals %d.\n", s[2], convert(s[2]));
        return 0;
    }
    else
    {
        int i, j;

        if( (a == 4) && (strcmp(s[1], "-s") == 0) && (i = atoi(s[2])) && (j = atoi(s[3])) )
        {
            printf("  Searching:\n úÄÄÄÄÄÄÄÄÄÄú\n  Searching for strings that equal %d, with a max length of %d.\n  Please wait...\n\n", i, j);
            results = 0;
            searchvalue = i;
            maxiterations = j;
            fp = fopen("matches.txt", "w");
            rekurs(0);
            if(results)
                printf(" matches found.\n  Matches has been saved to \"matches.txt\".\n");
            else
                printf("  Sorry, no matches.\n");
            fclose(fp);
            return 0;
        }
    }
   
    printf("  How to use:\n úÄÄÄÄÄÄÄÄÄÄÄú\n  gak [-c [string to convert]]\n  gak [-s [number to search for] [max length of string]]\n\n  Examples:\n    > gak -s 1996 4\n    > gak -c fuck\n");

return 0;
}

det skal siges jeg har prøvet og lave en system("PAUSE"); men det virker hellere ikke.
Avatar billede thomas_nj Nybegynder
10. april 2005 - 23:11 #1
Følgende:

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

char validchars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVXYZÆØÅabcdefghijklmnopqrstuvxyzæøå!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~£¤§¨´½";
char s[256];
int results, searchvalue, maxiterations;
FILE *fp;

int convert(char *s)
{
    int i, len, factor, room;
 
    len = strlen(s);
    factor = 1;
    room = 0;
    for(i = len - 1; i >= 0; i--)
    {
        room += (s[i] - '0') * factor;
        factor *= 10;
    }
    return room;
}

int rekurs(int iteration)
{
    char x;

    if(iteration < maxiterations)
    {
        iteration++;
        x = 0;
        while(validchars[x])
        {
            s[iteration - 1] = validchars[x];
            rekurs(iteration);
            s[iteration] = '\0';
            if(convert(s) == searchvalue)
            {
                int i = 0;

                results++;
                while(s[i])
                    putc(s[i++], fp);
                putc('\n', fp);
                printf("\r  %d", results);
            }
            s[iteration - 1] = '\0';
            x++;
        }
    }
    return 0;
}

int main(int a, char *s[])
{


    if(a == 3 && strcmp(s[1], "-c") == 0)
    {
        printf("  Converting:\n úÄÄÄÄÄÄÄÄÄÄÄú\n  \"%s\" equals %d.\n", s[2], convert(s[2]));
        return 0;
    }
    else
    {
        int i, j;

        if( (a == 4) && (strcmp(s[1], "-s") == 0) && (i = atoi(s[2])) && (j = atoi(s[3])) )
        {
            printf("  Searching:\n úÄÄÄÄÄÄÄÄÄÄú\n  Searching for strings that equal %d, with a max length of %d.\n  Please wait...\n\n", i, j);
            results = 0;
            searchvalue = i;
            maxiterations = j;
            fp = fopen("matches.txt", "w");
            rekurs(0);
            if(results)
                printf(" matches found.\n  Matches has been saved to \"matches.txt\".\n");
            else
                printf("  Sorry, no matches.\n");
            fclose(fp);
            return 0;
        }
    }
 
    printf("  How to use:\n úÄÄÄÄÄÄÄÄÄÄÄú\n  gak [-c [string to convert]]\n  gak [-s [number to search for] [max length of string]]\n\n  Examples:\n    > gak -s 1996 4\n    > gak -c fuck\n");
system("pause");
return 0;
}

Virker fint hos mig. Den giver godt nok 2 warnings men vinduet holder sig da åbent. Ser nu også mest ud at du skal kalde programmet fra cmd med 2 parametre.
Avatar billede jesperkm Nybegynder
10. april 2005 - 23:19 #2
Ja, den siger tryk på en vikarlig tast for at forsætte, og iprogrammet skal man skrive gak -c og det kan man jo ikke, så lukker vinduet.
Avatar billede thomas_nj Nybegynder
10. april 2005 - 23:29 #3
Du compiler programmet. Jeg ved ikke lige hvad din .exe fil kommer til at hedde. Jeg har bare sat koden ind i en fil kaldet test.cpp så .exe filen kommer til at hedde test.exe
Så starter jeg cmd (kør -> cmd) og finder ved hjælp af cd mappen med test.exe. Derefter kalder jeg ganske enkelt: test.exe -c "hej"
Det giver outputtet "hej" equals 6188.
Giver det mening?
Avatar billede bertelbrander Novice
10. april 2005 - 23:43 #4
Du skal måske putte en system("pause"); ind før de to andre return.
Avatar billede jesperkm Nybegynder
11. april 2005 - 12:35 #5
Læg svar thomas, det virker.
Avatar billede jesperkm Nybegynder
11. april 2005 - 12:48 #6
Hvordan ville det se ud i php hvis man skulle regne det ud med "+, -, *,/" ?
Avatar billede thomas_nj Nybegynder
11. april 2005 - 13:44 #7
Må indrømme jeg ikke lige kender så meget til php
Avatar billede jesperkm Nybegynder
11. april 2005 - 14:14 #8
Men ved du hvordan systemet er?  Altså med regnstykket?
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