Rösta fram årets bästa pepparkakshus!
2015-01-27, 15:45
  #121
Medlem
Finn tio fel.

Kod:
#include <limits.h>
#include <stdlib.h>

int main(int argc, char *argv) {
    char c;
    FILE *stream;
    int n;

    stream = fopen("C:\myfile.txt", "rb");
    if (!stream) {
        exit(1);
    }
    while (c != EOF)
        c = getchar();
        if (c = '\n') {
            if (n++ == INT_MAX) {
                exit(2);
            }
        }
    (void) printf("%d\n", n);
}
Citera
2015-01-27, 21:39
  #122
Medlem
Cambijaos avatar
Personligen skulle man nog lösa den relativt lätt. Men med andra faktorer som stress redan innan intervjUn och dylikt skulle förvärra för mig iallafall. Jag har dock massa sidoprojekt jag delar med mig till arbetsgivare.
Citera
2015-01-28, 11:41
  #123
Medlem
fittPlusPluss avatar
Citat:
Ursprungligen postat av den.femte.kaparen
Finn tio fel.

Kod:
#include <limits.h>
#include <stdlib.h>
//edit saknas stdio.h
int main(int argc, char *argv) {  //edit: även detta är fel
    char c; //edit msvc vill inte ens kompilera
    FILE *stream;
    int n;

    stream = fopen("C:\myfile.txt", "rb"); // måste man inte ha dubbla '\\' i strängar? ....var oxå fel, according to msvc
    if (!stream) {
        exit(1);
    }
    while (c != EOF)  //testar oinitierad variabel,C garanterar väl inte att variabel'n får värde automatiskt och C++ referencen säger att EOF normalt är -1?
        c = getchar();
        if (c = '\n') { //fel operator, möjligen också fel att använda '\n' då det är plattformsberoende?
            if (n++ == INT_MAX) { //samma här,modifierar och testar oinitierad variabel?
                exit(2);
            }
        }
    (void) printf("%d\n", n);
  
   //inga brackets runt while loopen heller, kanske meningen?
   //stänger aldrig filen? programmet avslutas dock och systemet lär väl städa upp antar jag
   //retunerar inte heller från alla möjliga "exitpoints"
}

la ner nån minut, fann dessa fel alla kanske inte är fel dock?
__________________
Senast redigerad av fittPlusPlus 2015-01-28 kl. 12:08.
Citera
2015-01-28, 11:46
  #124
Medlem
Diamondgrits avatar
Citat:
Ursprungligen postat av den.femte.kaparen
Finn tio fel.

Kod:
#include <limits.h>
#include <stdlib.h>

int main(int argc, char *argv) {
    char c;
    FILE *stream;
    int n;

    stream = fopen("C:\myfile.txt", "rb");
    if (!stream) {
        exit(1);
    }
    while (c != EOF)
        c = getchar();
        if (c = '\n') {
            if (n++ == INT_MAX) {
                exit(2);
            }
        }
    (void) printf("%d\n", n);
}
Jag ser på rak arm bara fyra

int main(int argc, char *argv) - ska vara int main(int argc, char **argv)

while (c != EOF) - har inget block under sig, så den kör bara nästa rad

if (c = '\n') - ska vara if (c == '\n')

(void) printf("%d\n", n); - inget direkt FEL men den där (void) ser lite mysko ut!

Femte felet kanske är att stdio.h saknas? Sen vet jag inte...
Citera
2015-01-28, 14:27
  #125
Medlem
Jag kan inte C förutom några tutorials. Jag kör c++ istället

Citat:
Ursprungligen postat av den.femte.kaparen
Finn tio fel.

Kod:
#include <limits.h>
#include <stdlib.h> 
// 1, fattar includes för inläsning

int main(int argc, char *argv) { // 2, *argv[] eller **argv
    char c; // 3, initiera variabler
    FILE *stream;
    int n;

    stream = fopen("C:\myfile.txt", "rb"); // 4,5 c:\\ samt att filen läses binary?
    if (!stream) { 6, ? NULL check? 
        exit(1);
    }
    while (c != EOF) // 7, brackets till innan printf
        c = getchar();
        if (c = '\n') { // 8,  ==
            if (n++ == INT_MAX) { 9, ++n  annars går du över INT_MAX
                exit(2);
            }
        }
    (void) printf("%d\n", n);

10, filen måste stängas
}


sen vet jag inte

*edit

ajust det, filen stängs aldrig

Programmet räknar rader i filen och skriver sedan ut antalet, antar jag
__________________
Senast redigerad av sampanl 2015-01-28 kl. 14:43.
Citera
2015-01-28, 15:49
  #126
Medlem
Alla utom två har nämnts:
  1. #include <stdlib.h> saknas.
  2. main() har fel signatur.
  3. c är char istället för int och kanske aldrig blir == EOF, t.ex. på system där char är unsigned.
  4. Ett backslash för lite i strängen.
  5. c används innan den har definierats.
  6. while-loopen har inga klamrar.
  7. getchar() läser från stdin. Den öppnade filen används aldrig.
  8. = istället för ==.
  9. n används innan den har definierats.
  10. n överflödar, odefinierat beteende. Skulle kunna krascha som division by zero.
  11. Jag glömde att ta bort binärläge när jag renskrev koden, så det elvte felet var mitt...
Citera
2015-01-28, 17:01
  #127
Medlem
Citat:
Ursprungligen postat av den.femte.kaparen
Alla utom två har nämnts:
  1. #include <stdlib.h> saknas.
  2. main() har fel signatur.
  3. c är char istället för int och kanske aldrig blir == EOF, t.ex. på system där char är unsigned.
  4. Ett backslash för lite i strängen.
  5. c används innan den har definierats.
  6. while-loopen har inga klamrar.
  7. getchar() läser från stdin. Den öppnade filen används aldrig.
  8. = istället för ==.
  9. n används innan den har definierats.
  10. n överflödar, odefinierat beteende. Skulle kunna krascha som division by zero.
  11. Jag glömde att ta bort binärläge när jag renskrev koden, så det elvte felet var mitt...

Är du säker på nr 10? om n överflödar "går den om" ? eller vad man ska säga... i det här fallet blir den negativ

Kod:
	int x = 2147483645;

	cout << x << endl;

	for (int i = 0; i < 6; i++,x++);

	cout << x << endl;
__________________
Senast redigerad av sampanl 2015-01-28 kl. 17:12.
Citera
2015-01-28, 17:20
  #128
Medlem
*sn0wflake*s avatar
Citat:
Ursprungligen postat av sampanl
Är du säker på nr 10? om n överflödar "går den om" ? eller vad man ska säga... i det här fallet blir den negativ

Kod:
	int x = 2147483645;

	cout << x << endl;

	for (int i = 0; i < 6; i++,x++);

	cout << x << endl;
Signed integer overflow är odefinierat i C/C++ (unsigned däremot "slår runt").

Odefinierat innebär att vad som helst kan hända, den kan "slå runt" men det kan lika gärna vara så att CPU:n smälter eller att du skjuter iväg en atombomb.
__________________
Senast redigerad av *sn0wflake* 2015-01-28 kl. 17:27.
Citera
2015-01-28, 19:02
  #129
Medlem
Citat:
Ursprungligen postat av *sn0wflake*
Signed integer overflow är odefinierat i C/C++ (unsigned däremot "slår runt").

Odefinierat innebär att vad som helst kan hända, den kan "slå runt" men det kan lika gärna vara så att CPU:n smälter eller att du skjuter iväg en atombomb.

Korrekt, försökte bara testa er lite

Citera
2015-01-29, 10:53
  #130
Medlem
mrharakiris avatar
Kom tillbaka från testet för 5minuter sedan, det gick sådär....
Testet handlade om att göra en sortering av en container innehållande ett givet objekt. Koden skulle skrivas i word vilket ställde till det lite då jag är van vid intellisense och syntax highlighting så det blev nog en del småfel. Vet att jag gjorde en blunder men rent strukturellt tror jag det blev ok.
Citera
2015-01-29, 11:08
  #131
Medlem
Diamondgrits avatar
Citat:
Ursprungligen postat av den.femte.kaparen
  1. #include <stdlib.h> saknas.
Fel nummer 12 här, jag är hyfsat säker på att stdlib.h var inkluderat...
Citera
2015-01-29, 11:19
  #132
Medlem
Diamondgrits avatar
Citat:
Ursprungligen postat av mrharakiri
Kom tillbaka från testet för 5minuter sedan, det gick sådär....
Testet handlade om att göra en sortering av en container innehållande ett givet objekt. Koden skulle skrivas i word vilket ställde till det lite då jag är van vid intellisense och syntax highlighting så det blev nog en del småfel. Vet att jag gjorde en blunder men rent strukturellt tror jag det blev ok.
Gjorde du en egen sortering eller använde du inbyggda quicksort?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in