21 / 59
Mar 2018

już kilka razy pisałaś na forum, zapewne też czytałaś wątki poświęcone zadaniom, z którymi miałaś kłopoty - więc powinnaś zauważyć, że preferowaną metodą przekazywania kodu jest link do ideone.com6

domyślam się, że programujesz w środowisku, w którym debugowanie nie jest łatwe (lub dostępne)

masz więc 2 moźliwości:

a) zmienić środowisko na przyjazne (np. Visual Studio Express, choć na początku to ono wydaje się wręcz wrogie, ale można się przyzwyczaić, za to możliwości ma mnóstwo)

b) pracować tak jak robiono to 30 lat temu :slight_smile: - czyli wstawiać dodatkowe wydruki w programie

np:

if (kontrola) {   for (int i = 0; i <=10; i++)  cout >> tab_pesel[i] >> ' '; cout >> endl; }

nah, akurat na środowisko nie moge narzekać bo mam Clion, ale robiłam tak jak b) i wydawalo mi sie, że wyniki były poprawne…Test przechodzi.

Dzieki twojemu testowi zauwazyłam, że nie zeruje sumy na koncu petli, wiec to był problem. Dziękuje za pomoc, bo tak to bym pewnie szukała problemu przez kilka kolejnych godzin :smiley:

6 months later

czy ktoś mi powie dlaczego pętla tutaj wykonuje mi się tylko raz w programie?

A podajesz liczbę testów? Bo mi normalnie zrobil

Program jest poprawny i usuń go, i link do ideone w drigim wątku, jedyny błąd to rozmiar tablicy char, na końcu jeszcze NULL ma sie zmieścić, i pewnie przez to mogą sie dziac rozne dziwne rzeczy

no tak dałem rozmiar tablicy na 12 i już było ok. I to tak zawsze trzeba rezerwować dodatkowo jedno miejsce ?

Tak, w charach na końcu łańcucha znaków jest Null, musi być dla niego miejsce, w innych tablicach nie musi (liczbowe).

1 month later

Hej. Ja zrobiłem to tak. Na moim kopi działa dobrze wyniki są poprawne.
Na SPOJ nie działa. Dlaczego?

#include <iostream>
#include <string>
#include <cstdlib>
#include <math.h>
using namespace std;

int main()
{
	string pesel;
	string pomocnicza="";
	double wynik=0;
	int tab[11];
	short ile;
	cin >> ile;
	for (int k = 0; k < ile; k++)
	{
		cin >> pesel;

		for (int i = 0; i < 11; i++)
		{
			pomocnicza.push_back(pesel[i]);
			tab[i] = atoi(pomocnicza.c_str());
			pomocnicza = "";
		}
		tab[0] = tab[0] * 1;
		tab[1] = tab[1] * 3;
		tab[2] = tab[2] * 7;
		tab[3] = tab[3] * 9;
		tab[4] = tab[4] * 1;
		tab[5] = tab[5] * 3;
		tab[6] = tab[6] * 7;
		tab[7] = tab[7] * 9;
		tab[8] = tab[8] * 1;
		tab[9] = tab[9] * 3;
		tab[10] = tab[10] * 1;
		for (int j = 0; j < 11; j++)
		{
			wynik += tab[j];
		}
		if ((wynik - ((floor(wynik / 10)) * 10)) == 0)
			cout << "D" << endl;
		else
			cout << "N" << endl;
	}

    return 0;
}

prawdopodobnie dlatego, że niedokładnie przeczytałeś treść zadania

To musisz być w błędzie, ponieważ w programie suma wychodzi 121, dla sprawdzenia u mnie na kartce zgodnie z algorytmem podanym w zadaniu też wychodzi 121.
121%10!=0

z tego wniosek, że

  1. przeczytaliśmy treść różnych zadań (co mało prawdopodobne)
  2. przeczytałeś nieuważnie treść zadania - zdecydowanie bardziej prawdopodobne :slight_smile:
23 days later

Witam, ciągle wyrzuca mi błąd. Pdejrzewam, że ma to coś wspólnego z wczyywaniem danych za pomocą scanf (białe znaki) ponieważ gdy wpisze ciąg 11 cyfr program uważa, że to jedna wprowadzona (muszą być odzielone enterem).
Bardzo prosze o rade i z góry dziekuje :slight_smile:
Link do kodu: https://ideone.com/b7VPaa8