konto usunięte

Temat: Proszę o pomoc

Marta Śmigielska:
Zmieniłam kod i plik tekstowy rozdzieliłam na dwie części. Powstał plik z pytaniami i inny z odpowiedziami.
Kod mi się kompiluje natomiast źle interpretuje warunek i nawet jak podaje prawidłową odpowiedź wypisuje mi "zle" i kończy program.

Zrób może tak:

if(stricmp (&odp,&podp) == 0)
{
printf("Dobrze");
getch();
} else {
printf("Źle");
getch();
break;
}
Piotr Likus edytował(a) ten post dnia 29.09.10 o godzinie 09:50
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Proszę o pomoc

Piotr Likus:
Zrób może tak:
>
[quote]if(stricmp (&odp,&podp) == 0)
...

oj chyba jednak tak


if(stricmp (odp,podp) == 0)
Tomasz Kaczanowski edytował(a) ten post dnia 29.09.10 o godzinie 10:15

konto usunięte

Temat: Proszę o pomoc

Tomasz Kaczanowski:
oj chyba jednak tak


if(stricmp (odp,podp) == 0)
Tomasz Kaczanowski edytował(a) ten post dnia 29.09.10 o godzinie 10:15

Być może, miałem wątpliwości co do tym ampersandów.
Marta Ś.

Marta Ś. Grafik komputerowy

Temat: Proszę o pomoc

Po usunięciu ampersandów pojawia się błąd w lini z if'em: invalid conversion from 'char' to 'const char*'

konto usunięte

Temat: Proszę o pomoc

To pokaż cały kod, bo kompilacja powinna przejść.
Marta Ś.

Marta Ś. Grafik komputerowy

Temat: Proszę o pomoc

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

int main()
{
FILE *f;
FILE *n;
char tab [100];
char podp[100];
int i;
char odp;

f= fopen ("plik.txt" , "r");
n=fopen ("odpowiedzi.txt" , "r");

for (i=0;i<5;i++)
{
fgets (tab , 100 , f);
fgets (podp , 100 , n);
fputs (tab , stdout);

printf("Podaj odpowiedz:");
scanf("%s",&odp);
if(strcmp (odp,podp[i]) == 0)
{printf("Dobrze");
getch();}
else if( strcmp (odp,podp[i]) != 0);
{ printf("zle"); getch(); break;}
}
fclose (n);
fclose (f);
getch();

return 0;
}

konto usunięte

Temat: Proszę o pomoc

Wykasuj to [i], to nie ma żadnego sensu.
Marek Dąbek

Marek Dąbek Software Engineer,
Intel Technology
Poland

Temat: Proszę o pomoc

W tym kodzie jest trochę do zrobienia, bo nie ma kontroli wprowadzanych danych w scanfie.

Ale do rzeczy:

1. Zadeklarowałaś odp jako pojedynczy znak:
char odp;


2. Musisz zrobić tablicę znaków, tak jak np:
char odp[10];


3. Mając tablicę znaków o stałym rozmiarze ogranicz ilość czytanych znaków w scanfie:
 scanf("%9s", odp);


4. Teraz porównanie powinno wyglądać tak:
 if(strcmp(odp, podp)) 
Marek Dąbek edytował(a) ten post dnia 29.09.10 o godzinie 15:32
Marta Ś.

Marta Ś. Grafik komputerowy

Temat: Proszę o pomoc

Poprawiłam kod ale po skompilowaniu nadal po podaniu poprawdnej odpowiedzi wypisuje "zle" i po podaniu błędnej też "zle"...
Marek Dąbek

Marek Dąbek Software Engineer,
Intel Technology
Poland

Temat: Proszę o pomoc

Zrób sobie tymczasowe printfy na to co wczytałaś i jaka jest odpowiedź. Będziesz widziała, gdzie leży problem, np. zmień kod w ten sposób:

scanf("%s",&odp);
printf("podp: %s; odp: %s", podp, odp); //to dodałem
if(strcmp (odp,podp) == 0)

konto usunięte

Temat: Proszę o pomoc

Marta Śmigielska:
Poprawiłam kod ale po skompilowaniu nadal po podaniu poprawdnej odpowiedzi wypisuje "zle" i po podaniu błędnej też "zle"...

Jakiego środowiska używasz? Poczytaj sobie co to jest tryb Debug i zacznij go używać. Będziesz mogła linia po linii prześledzić zmienne w programie.
Piotr P.

Piotr P. Software Developer

Temat: Proszę o pomoc

Marta Śmigielska:
Poprawiłam kod ale po skompilowaniu nadal po podaniu poprawdnej odpowiedzi wypisuje "zle" i po podaniu błędnej też "zle"...

W pytaniach sugerujesz odpowiedzi 'ABCD', podczas gdy w pliku z odpowiedziami oczekujesz 'abcd'. Zamiast strcmp(), lepsze będzie strcasecmp().
Marta Ś.

Marta Ś. Grafik komputerowy

Temat: Proszę o pomoc

Piotr P.:
W pytaniach sugerujesz odpowiedzi 'ABCD', podczas gdy w pliku z odpowiedziami oczekujesz 'abcd'. Zamiast strcmp(), lepsze będzie strcasecmp().

Zabardzo nie rozumiem w czym problem. Przecież pytania i sugerowane odpowiedzi A,B,C,D, są tylko wyświetlanym tekstem...

jaka jest różnica między strcmp() a strcasecmp()?
Marta Ś.

Marta Ś. Grafik komputerowy

Temat: Proszę o pomoc

Adam Michalski:
Jakiego środowiska używasz?

Piszę w Dev C++

konto usunięte

Temat: Proszę o pomoc

Marta Śmigielska:
jaka jest różnica między strcmp() a strcasecmp()?

int strcmp ( const char * str1, const char * str2 );
Compare two strings

int strcasecmp(const char *s1, const char *s2);
compare two strings ignoring case

http://www.cplusplus.com/reference/clibrary/cstring/st...
http://linux.die.net/man/3/strcasecmp
Marta Śmigielska:
Adam Michalski:
Jakiego środowiska używasz?
Piszę w Dev C++

http://www.youtube.com/watch?v=kHFpzxMFB3EAdam Michalski edytował(a) ten post dnia 29.09.10 o godzinie 19:35
Marta Ś.

Marta Ś. Grafik komputerowy

Temat: Proszę o pomoc

Rozwiązałam problem:) Dziękuję serdecznie za odpowiedzi i pomoc:)

Następna dyskusja:

Proszę o pomoc




Wyślij zaproszenie do